我想在关联数组中搜索字符串

时间:2019-02-05 15:00:02

标签: php codeigniter

Array
(
    [0] => stdClass Object
        (
            [goal_status_name] => Not Started
        )

    [1] => stdClass Object
        (
            [goal_status_name] => Completed
        )
    [2] => stdClass Object
        (
            [goal_status_name] => Pending
        )
)

如果要使用计数代码,则要在上面的数组中搜索字符串值。如果不存在,则要使用php代码搜索不等于0的字符串值。

$string = "Not Started";
$count = 0;
if(in_array($string, $data)){
  $count++;
  $val = $count; 
}

3 个答案:

答案 0 :(得分:1)

只需添加注释作为答案,从PHP 7开始,您可以将array_column()与对象作为输入,因此只需使用...

$string = "Not Started";
$count = 0;
if(in_array($string, array_column($data,"goal_status_name"))){
    $count++;
    $val = $count;
}

答案 1 :(得分:0)

如果它是对象数组,则可以执行以下操作:

$count = 0;
foreach ($objects as $object) {
    if($object->goal_status_name == 'Not Started'){
        $count++;
    }
}

答案 2 :(得分:0)

您没有关联数组。您有一个带有对象的索引数组。

您可以通过简单的foreach循环来实现

$string = "Not Started";
$count  = 0;

foreach ($data as $obj) {
    if ($obj->goal_status_name === $string) {
        $count++;
    }
}

现在,在循环之后,要查看至少一个对象是否包含该字符串,您可以执行以下操作:

if ($count > 0) {
    echo 'Match found';
}

如果您想知道 all 个对象是否包含该字符串,则可以执行以下操作:

if ($count > 0 && $count == count($data)) {
    echo 'All objects match';
}

$count仅包含匹配数。