1

好的,我有以下“挑战”;

我有这样的数组:

Array
(
    [0] => Array
        (
            [id] => 9
            [status] => 0
        )

    [1] => Array
        (
            [id] => 10
            [status] => 1
        )

    [2] => Array
        (
            [id] => 11
            [status] => 0
        )
)

我需要做的是检查它们是否都具有相同的[状态]。问题是,我可以在里面有 2 个或更多(动态)数组。

我如何循环/搜索它们?

array_diff 确实支持多个数组进行比较,但是怎么做呢?:( 我尝试过哪个循环,或者我的 Apache / 浏览器死了 - 或者我得到了完全虚假的数据。

4

4 回答 4

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.
于 2011-10-05T16:37:14.287 回答
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;
}
于 2011-10-05T16:37:19.787 回答
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);
于 2011-10-05T16:39:01.723 回答
0

我不确定您想要什么作为输出,但您可以遍历外部数组并创建一个输出数组,该数组按状态对内部数组进行分组:

$outputArray = array();
foreach ($outerArray as $an_array) {
    $outputArray[$an_array['status']][] = $an_array['id'];
}
于 2011-10-05T16:37:56.417 回答