我有一个使用mysql生成的数组:
$conn = connect();
$stmt = $conn->prepare("select id, type, status from arraytest");
$stmt->execute();
$myArray = $stmt->fetchAll();
当我print_r($myArray)
时,我明白了:
Array ( [0] => Array ( [id] => 3 [0] => 3 [type] => 0 [1] => 0 [status] => 0 [2] => 0 ) [1] => Array ( [id] => 6 [0] => 6 [type] => 0 [1] => 0 [status] => 1 [2] => 1 ) )
我也可以这样访问数组:
echo $myArray[0][0]. ' ' . $myArray[0][1]. ' ' . $myArray[0][2];
echo '<br>';
echo $myArray[1][0]. ' ' . $myArray[1][1]. ' ' . $myArray[1][2];
表数据很简单:
"id" "type" "status"
"3" "0" "0"
"6" "0" "1"
我需要针对while循环运行数组,并检查数组中的id
是否与$i
匹配。但是如何使用这样的数组呢?我想不通?你能帮忙吗?
while ($i <= 10) {
echo $i;
echo ((array_key_exists($i,$myArray)) ? ' OK <br>' : ' Fail <br>'); // I need to check if $i == id from the array.
$i++;
echo '<br>';
}
预期输出
1 Fail
2 Fail
3 OK
4 Fail
5 Fail
6 OK
//and so on
答案 0 :(得分:0)
while ($i <= 10) {
echo $i;
echo ($i==$myArray[$i]['id']) ? ' OK <br>' : ' Fail <br>';
$i++;
echo '<br>';
}
修改强>
编辑问题后,这是一个不同的故事。试试这个:
while ($i <= 10) {
echo $i;
$msg=' Fail <br>';
foreach ($myArray as $v)
if ($i==$v['id']) $msg=' OK <br>';
echo $msg;
$i++;
echo '<br>';
}
答案 1 :(得分:0)
您可以修改以下代码以获取该代码。这是遗传密码
<?php
/**
* Get list of all keys of a multidimentional array
*
* @param array $array Multidimensional array to extract keys from
* @return array
*/
function array_keys_multi(array $array)
{
$keys = array();
foreach ($array as $key => $value) {
$keys[] = $key;
if (is_array($array[$key])) {
$keys = array_merge($keys, array_keys_multi($array[$key]));
}
}
return $keys;
}
答案 2 :(得分:0)
这对您的代码进行了相当少的更改:
while ($i <= 10) {
echo $i;
$matched = array_filter($myArray, function($record) use ($i) {
return $record['id'] === $i;
});
echo !empty($matched) ? ' OK <br>' : ' Fail <br>';
$i++;
echo '<br>';
}
在每个循环中,$matched
设置为id等于$i
的记录数组。如果匹配则为非空,否则为空。
当然,您也可以使用普通foreach
循环来确定是否存在匹配的ID。