1

私はこれを持っています (3 つのレコードのみを表示しています。他にもたくさんあります)

Array
(
[0] => Array
    (
        [name] => Johnson, John
        [telephonenumber] => 555.555.555
        [department] => Department A
    )

[1] => Array
    (
        [name] => Johnson, Bill
        [telephonenumber] => 555.555.4444
        [department] => Department B
    )

[2] => Array
    (
        [name] => Johnson, Carry
        [telephonenumber] => 555.555.3333
        [department] => Department C
    )
)

部門 A、B などの複数のメンバーが存在するため、このデータをループして、部門 A のメンバーのみを吐き出す必要があります。

if ($phoneList['department'] == 'Falmouth') {
    echo $phoneList['name'] . '<br>';
    echo $phoneList['telephonenumber'] . '<br>';
    echo $phoneList['department'] . '<br><br>';
}

しかし、存在しないと思うのでエラーが発生$phoneList['department']します(存在しないはず$phoneList[0]['department']です)?

いずれにせよ、それは役に立ちません... どうすればこれらの 90 個の配列すべてを検索し、部門 A ステータスのものだけを印刷できますか?

$phoneList は、ビューに渡される変数です(codeigniter、ldap、および php を使用)

4

5 に答える 5

2

あなたが使用することができますforeach

foreach($phoneList as $item)
{
  if($item['department'] == 'Falmouth')
  {
    echo $phoneList['name'] . '<br>';
    echo $phoneList['telephonenumber'] . '<br>';
    echo $phoneList['department'] . '<br><br>';
  }
}
于 2012-06-13T14:34:55.753 に答える
2

Josh が正しいと確信しています。次のようなものを使用する必要があります。

foreach( $phoneList as $item) {
    if( $item['department'] == 'Falmouth') {
        echo $item['name'] . '<br>';
        echo $item['telephonenumber'] . '<br>';
        echo $item['department'] . '<br><br>';
    }
}

foreach ループの内部を次の呼び出しに置き換えることもできますimplode()

foreach( $phoneList as $item) {
    if( $item['department'] == 'Falmouth') {
        echo implode( '<br>', $item) . '<br><br>';
    }
}
于 2012-06-13T14:35:04.520 に答える
1
try
foreach($phoneList as $key => $data)
{

    if($data['department'] == 'DepartmentA')
    {
        ...
    }

}
于 2012-06-13T14:34:56.407 に答える
1
$testNeedle = 'DepartmentS';
foreach( array_filter( $phonelist,
                       function($arrayEntry) use ($testNeedle) {
                           return $arrayEntry['department'] === $testNeedle;
                       }
         ) as $phoneEntry) {
    var_dump($phoneEntry);
}
于 2012-06-13T14:43:35.800 に答える
0

これらのタイプの質問には、「array_walk」も使用できます。以下に記述された関数を次のように呼び出す必要があります-

array_walk($phoneList, 'print_department');

機能は次のとおりです。

function print_department($phonelist){

    // Printing the items
    if($phonelist['department'] == 'Falmouth'){
        echo $phonelist['name']. '<br>';
        echo $phonelist['telephonenumber']. '<br>';
        echo $phonelist['department']. '<br>';
    }
}
于 2012-06-13T14:52:01.703 に答える