好的,我跟随'challange';
我有这样的数组:
Array
(
[0] => Array
(
[id] => 9
[status] => 0
)
[1] => Array
(
[id] => 10
[status] => 1
)
[2] => Array
(
[id] => 11
[status] => 0
)
)
我需要做的是检查它们是否都具有相同的[状态]。 问题是,我可以在里面有2个或更多(动态)数组。
如何循环/搜索它们?
array_diff确实支持多个数组进行比较,但是怎么做呢? :( 我试过哪个循环,或者我的Apache /浏览器死了 - 或者我完全忘记了数据。
答案 0 :(得分:2)
您可以将问题分开,以便更容易解决。
首先从您的数组中获取所有status
项:
$status = array();
forach($array as $value)
{
$status[] = $value['status'];
}
现在你有了一个名为$status
的数组,你可以看到它是否总是包含相同的值,或者它是否有多个值:
$count = array_count_values($status);
echo count($count); # number of different item values.
答案 1 :(得分:1)
function allTheSameStatus( $data )
{
$prefStatus = null;
foreach( $data as $array )
{
if( $prefStatus === null )
{
$prefStatus = $array[ 'status' ];
continue;
}
if( $prefStatus != $array[ 'status' ] )
{
return false;
}
}
return true;
}
答案 2 :(得分:1)
试试这段代码:
$status1 = $yourArray[0]['status'];
$count = count($yourArray);
$ok = true;
for ($i=1; $i<$count; $i++)
{
if ($yourArray[$i]['status'] !== $status1)
{
$ok = false;
break;
}
}
var_dump($ok);
答案 3 :(得分:0)
我不确定你想要什么作为输出,但你可以遍历外部数组并创建一个输出数组,按状态对内部数组进行分组:
$outputArray = array();
foreach ($outerArray as $an_array) {
$outputArray[$an_array['status']][] = $an_array['id'];
}