如何根据键匹配得到数组的值

时间:2017-04-24 06:23:01

标签: php arrays

嗨,我正在进行一些操作,我需要从其键中获取数组的值。

我的$attr_color变量的值为red

因此,如果red在数组中,则需要返回其值。

以下是我的数组:

Array
(
    [0] => Array
        (
            [label] =>  
            [value] => 
        )

    [1] => Array
        (
            [label] => red
            [value] => 32
        )

    [2] => Array
        (
            [label] => green
            [value] => 33
        )

    [3] => Array
        (
            [label] => pink
            [value] => 34
        )

    [4] => Array
        (
            [label] => black
            [value] => 35
        )

    [5] => Array
        (
            [label] => white
            [value] => 36
        )

)

我试过下面的代码,但它返回空白:

$attr_color = "red";

//$response is my array which i have mention above.
if(in_array($attr_color,array_column($response,"label")))
{

    $value = $response['value'];
    echo "Value".$value;
    exit;
}

帮助?哪里弄错了?

7 个答案:

答案 0 :(得分:2)

尝试这个简单的解决方案,希望这会帮助你。在这里,我们使用array_column获取列并使用keysvalues对其进行索引,其中keyslabelsvalues为{{1 }}

Try this code snippet(带样本输入)

value

答案 1 :(得分:2)

在你的情况下,使用常规foreach循环就足够了:

$attr_color = "red";
$value = "";

foreach ($response as $item) {
    if ($item['label'] == $attr_color) {
        $value = $item['value'];
        break;   // avoids redundant iterations
    }
}

答案 2 :(得分:2)

使用array_search 并检查错误

$index = array_search($attr_color, array_column($response,"label"));
if ($index !== false) {
    echo $response[$index]['value'];
}

答案 3 :(得分:1)

array_column与第三个参数和array_search一起使用为

 $attr_color="red";
 $arr = array_filter(array_column($response, "label", 'value'));// pass thired parameter to make its key
    if (array_search($attr_color, $arr)) {// use array search here

        echo array_search($attr_color, $arr);
    }

答案 4 :(得分:1)

尝试以下代码:使用数组匹配功能:

$your_value = array_search($attr_color, array_column($response,"label"));
if ($index !== false) {
    echo $response[$your_value]['value'];
}

答案 5 :(得分:0)

使用array_search代替in_array

$attr_color = "red";

if(($index = array_search($attr_color,array_column($response,"label")))!==FALSE)
{

    $value = $response[$index]['value'];
    echo "Value".$value;
    exit;
}

答案 6 :(得分:0)

尝试:

$attr_color = "red";

//$response is my array which i have mention above.

$index = array_search($attr_color, array_column($response, 'label'));

if($index!==false){
    $value = $response[$index]['value'];
    echo "Value:".$value;
    exit;
}

这里$ index将获得标签为红色

的数组的索引