Rea*_*ado 1 php arrays php-5.3
在我的下面的代码中,我希望PHP查找值为2的"NUMBER"并在布尔值中说是否存在,但是它不起作用:
<?
$array[]    =   array('NUMBER' => 1, 'LETTER' => 'A');
$array[]    =   array('NUMBER' => 2, 'LETTER' => 'B');
$array[]    =   array('NUMBER' => 3, 'LETTER' => 'C');
echo (in_array(array('NUMBER' => 2), $array)) ? '1' : '0'; // (expected: 1; actual: 0)
?>
Run Code Online (Sandbox Code Playgroud)
谁能告诉我哪里出错了?提前致谢.
in_array()`将给定值与数组值进行比较.在您的情况下,数组的每个条目都有两个值,但给定的数组只包含一个,因此您无法以这种方式进行比较.我没有看到一个方法
$found = false;
foreach ($array as $item) {
  if ($item['NUMBER'] == 2) {
    $found = true;
    break;
  }
}
echo $found ? '1' : '0';
Run Code Online (Sandbox Code Playgroud)
也许(特别是使用php5.3)你可以使用array_map()或构建一些东西array_reduce().例如
$number = 2;
echo array_reduce($array, function ($found, $currentItem) use ($number) {
  return $found || ($currentItem['NUMBER'] == $number);
}, false) ? '1' : '0';
Run Code Online (Sandbox Code Playgroud)
要么
$number = 2;
echo in_array($number, array_map(function ($item) {
  return $item['NUMBER'];
}, $array) ? '1' : '0';
Run Code Online (Sandbox Code Playgroud)