2

配列を分解し、各値を読み取り、それらを配列に出力したい...

どこが間違っているのかわかりません。私を助けてください..これは私のコードです..

配列から文字列への変換エラーが発生しています

$query="SELECT categories FROM shops";
$result = mysql_query($query);  
while($column = mysql_fetch_assoc($result)){
    $categories=explode(",",$column['categories']);
    foreach($categories as $value){
        $new_query="SELECT name from categories where id='$value'";
        $name = mysql_query($new_query);    
        $name_column= mysql_fetch_assoc($name);
        array_push($shops_list,$name_column);

    }
}
echo implode(",",$shops_list);
4

5 に答える 5

2

$shop_listこの行で使用する前に定義されていませんarray_push($shops_list,$name_column);。そして、この行

    array_push($shops_list,$name_column);

キーについて言及する必要があるためname

    array_push($shops_list,$name_column['name']); //or better
    $shop_list[] = $name_column['name'];
于 2012-10-18T13:51:40.520 に答える
1

いくつかの問題:

$name_column = mysql_fetch_assoc($name);
$name_column = $name_column['name'];

name_column配列です。

shops_list初期化されることはありません。

[]の代わりに使用する必要がありarray_pushます。

于 2012-10-18T13:49:32.623 に答える
1

group_concatを使用して値を取得します。結果を取得したら、それらを直接検索に使用します。お気に入り

$result_array = explode(",",$row['category']);

    foreach($result_array as $ra)
    {
    //sql command. fetch here.
    $new_query="SELECT name from categories where id='$value'";
    $name = mysql_query($new_query);    
    $name_column= mysql_fetch_assoc($name);
    $shops_list[] = $name_column;
    }

他の方法でより良い解決策を試してください

于 2012-10-18T14:05:23.887 に答える
1

他の連中はそれを鼻に当てましたが、$name_column で配列をプッシュすると、$name_column は配列であるため、次のようになります。

Array
(
    [0] => Array
        (
            [name] => boo
        )
)

明らかに、それを内破させてもうまくいきません。

そうは言っても、ここで本当に必要なことは、カテゴリ マッピングをコンマ区切りの文字列としてデータベースに保持しないことです。標準の DB アーキテクチャでは、マッピング テーブルを使用する必要があります。

  • テーブルショップ
  • テーブルのカテゴリ
  • shop_id と category_id を持つ表 shop_category_map
于 2012-10-18T13:57:57.693 に答える
1

// 配列を分解し、配列の特定のインデックスまで内破する

$a = '192.168.3.250';
$b = explode('.',$a);
$ar = array();

for($i=0;$i<=2;$i++)
{
   array_push($ar,$b[$i]);
}

$C = implode($ar,'.');
print_r($C);
于 2013-06-04T12:07:09.490 に答える