使用in_array PHP检查此数组

时间:2017-06-29 14:05:53

标签: php arrays string

我有一个$ checked数组,看起来像这样:

array(2) {
  [0]=>
  array(1) {
    ["id_kategorii"]=>
    string(1) "2"
  }
  [1]=>
  array(1) {
    ["id_kategorii"]=>
    string(1) "4"
  }
}
foreach中的 $ category数组如下所示:

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时,它应该适用于类别['id']。

为什么这个in_array不能正常工作?

1 个答案:

答案 0 :(得分:2)

您需要使用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()数组。