1

私は次のような配列を持っています:

Array
(
[0] => Array
(
    [Product] =>  Amazing Widget
    [Value] => 200
)

[1] => Array
(
    [Product] => Super Amazing Widget
    [Value] => 400
)

[2] => Array
(
    [Product] =>  Promising Widget 
    [Value] => 300
)

[3] => Array
(
    [Product] => Superb Widget
    [Value] => 400
)
)

ネストされた多次元配列だと思います。

とにかく、製品名がすでにアレイに存在するかどうかを検出しようとしています。これが私がやろうとしていることです

if('Super Amazing Widget' is in the array) {
    echo 'In the Array';
}

私はこれを試しました:

if(in_array('Super Amazing Widget', $array)){
    echo 'In The Array';
}

しかし、それは機能しておらず、理由がわかりません。

編集:

ここにある関数のいくつかは本当にうまく機能しました:in_array()と多次元配列

4

4 に答える 4

5

in_array再帰的な検索、つまりサブ配列での検索は行いません。配列をループして、手動で値を確認する必要があります。

$found = false;
foreach($arr as $item) {
    if ($item['Product'] == 'Super Amazing Widget') {
        $found = true;
        break;
    }
}
if ($found)
    echo 'found!'; //do something

実例

于 2012-04-16T20:00:57.157 に答える
0
foreach ($array as $item) {
    if ($item["Product"] == "Super Amazing Widget") {
        echo "in the array";
        break;
    }
}
于 2012-04-16T20:04:02.617 に答える
0

これはループを使用せずに:

$filt = array_filter($array, create_function('$val',
                                'return $val["Product"] === "Super Amazing Widget";'));
if (!empty($filt)) {
    echo "In The Array\n";
}
于 2012-04-16T20:12:22.543 に答える
0

前の回答と同様にarray_filterを使用しますが、古いcreate_function()の代わりに新しい匿名関数を使用します。

if(array_filter(
    $array, 
    function($val) { return $val['Product'] === 'Super Amazing Widget'; }
    )) {
    echo 'In the array' . PHP_EOL;
}
于 2012-04-16T21:04:26.773 に答える