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);

需要,因为您需要提及 key 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

其他人对此嗤之以鼻,但是当您对 $name_column 进行数组推送时,由于 $name_column 是一个数组,您最终会得到:

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

显然,对此进行内爆是行不通的。

话虽如此,您真正需要做的不是将类别映射作为逗号分隔的字符串保存在数据库中。标准数据库架构要求您使用映射表。

  • 餐桌店
  • 表类别
  • 具有 shop_id 和 category_id 的表 shop_category_map
于 2012-10-18T13:57:57.693 回答
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

// 分解一个数组,然后分解直到数组的特定索引

$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 回答