0

我有以下代码:

  foreach ($result as $row) {
$categories[] = array('id' => $row['id'], 'name' => $row['name']);
if($categories['id'] = $selectedcategory ){ 
    $categories['selected'] = 'true'; 
}

这将创建一个包含来自查询的所有 id 和名称的数组。没关系。然后它会检查特定值($selectedcategory)并添加一个值为“true”的键“selected”。

当我对 $categories 执行 print_r 时,我得到:

Array ( [0] => Array ( [id] => 1 [name] => Expertise ) [selected] => true [1] => Array ( [id] => 2 [name] => Tools ) [2 ] => Array ( [id] => 3 [name] => On the go ) [3] => Array ( [id] => 4 [name] => Lab ) [4] => Array ( [id] => 5 [名称] => 知道如何)) 

它将选定的键放置在正确的 id 值 (1) 中,但它被放置在 Array 0 括号之外。

我究竟做错了什么?

4

3 回答 3

1

你的 if 条件我错了,

您正在使用单个 = 来

它应该是

if($categories['id'] == $selectedcategory ){ 
    $categories['selected'] = 'true'; 
}
于 2013-09-06T10:16:17.930 回答
1

像这样使用..

foreach ($result as $row) {
     if($row['id'] == $selectedcategory ){ 
       $selected = 'true';
     else 
       $selected = 'false';
     $categories[] = array('id' => $row['id'], 'name' => $row['name'],'selected'=>$selected);

    }
于 2013-09-06T10:19:34.830 回答
1

当您使用 [] 向数组添加元素时,您会在此数组中创建一个新位置并在其中添加所有信息。

$categories[] = array('id' => $row['id'], 'name' => $row['name']);  

这意味着 $categories[$pos] 包含您使用 id 和名称创建的数组,并且您无法与 $categories['id'] 进行比较,因为此索引不存在,您应该与此进行比较

$categories[$pos]['id']  

为此,您需要知道在什么位置添加了新数组,或者假设它是最后一个数组元素

更新:这里有一个带有@meze 建议的代码示例

foreach ($result as $row) {
  $tmp = array('id' => $row['id'], 'name' => $row['name']);
  if($tmp['id'] == $selectedcategory ){ 
    $tmp['selected'] = 'true'; 
  }  
  $categories[] = $tmp;  
}
于 2013-09-06T10:21:48.640 回答