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 に答える