数组中的php foreach获得另一个字段的值

时间:2017-06-14 10:32:38

标签: php arrays object foreach

我有这个std类对象数组:

$myarray = 
    Array
    (
        [0] => stdClass Object
            (
                [text] => lorem lorem
                [src] => web
            )

        [1] => stdClass Object
            (
                [text] => ipsum ipsum
                [src] => book
            )
    )

我有$value = "lorem lorem",我想在数组中查找并返回该对象的src

这是我的尝试:

foreach($myarray -> 'text' as $key => $text_value){
    if($value == $text_value){
          $new_src = $myarray -> 'src';
    }
}

3 个答案:

答案 0 :(得分:1)

你几乎就在那里,你需要遍历数组,然后检查对象的text属性:

foreach ($myarray as $object) {
    if ($object->text == $text_value){
          $new_src = $object->src;
    }
}

这将迭代数组项并获取每个StdClass对象,然后您可以使用该对象将text$text_value进行比较,如果匹配则更新$new_src

答案 1 :(得分:1)

您可以按$item->text == $value

过滤
$value = "lorem lorem"
$array = array_filter($myarray, function($v) use($value) {
  return $v->text == $value;
});
$srcs = array_map(function($v){return $v->src;}, $array);
print_r($srcs);

答案 2 :(得分:0)

我认为这会有所帮助,我稍微改变了#1答案

$src = getSrc($myarray, $value);

function getSrc($objArray, $text) {
    foreach($objArray as $obj){
        if ($obj->text == $value)
            return $obj->src;
    }
    return false;
}