2017-06-29 84 views
0

我有一个$检查阵列,看起来是这样的:在的foreach检查通过这个数组in_array PHP

array(2) { 
    [0]=> 
    array(1) { 
    ["id_kategorii"]=> 
    string(1) "2" 
    } 
    [1]=> 
    array(1) { 
    ["id_kategorii"]=> 
    string(1) "4" 
    } 
} 

$类别排列的样子:

array(2) { 
    ["id"]=> 
    string(2) "14" 
    ["nazwa"]=> 
    string(3) "123" 
} 
array(2) { 
    ["id"]=> 
    string(1) "8" 
    ["nazwa"]=> 
    string(5) "ajaja" 
} 
array(2) { 
    ["id"]=> 
    string(1) "4" 
    ["nazwa"]=> 
    string(23) "ale nie no kurde w dupe" 
} 

等......但它不是像数组('1','2','3')那样的典型数组;但是它不是像数组一样的典型数组。 所以我觉得,因为它的这个不工作,但我不知道......

而且我有PHP代码:

foreach($categories as $category) 
      { 
       $final .= '<tr>'; 

       if(in_array($category['id'], $checked)) 
       { 
        $final .= '<td>'.form_checkbox(array('name' => 'categories[]', 'value' => $category['id'], 'checked' => 'checked')).'</td>'; 
       } 
       else 
       { 
        $final .= '<td>'.form_checkbox(array('name' => 'categories[]', 'value' => $category['id'])).'</td>'; 
       } 

但它总是带有别的,in_array永不熄灭真正。

它应该去类别真[“身份证”]当它是2和4

为什么没有这个in_array正常工作?

+0

你需要使用checked array。使用'array_column()'你可以创建一个新的数组,然后'in_array()'将正常工作 –

+0

你是什么意思我必须使用? –

+0

@FrayneKonok我不明白你的观点或想法,为什么要创建新列? –

回答

1

您需要使用array_column()函数重新校验阵列。

$checked = array(array('id_kategorii' => '2'), array('id_kategorii' => '4')); 
$new_checked = array_column($checked, 'id_kategorii'); 
print_r($new_checked); 

然后使用$new_checked阵列在in_array()