如果条件检查多列数组php的值

时间:2017-06-14 13:50:57

标签: php arrays

我正在尝试获取is_activated列密钥的值。但无法获得确切的价值。已尝试array_search()

查看数组

需要检查所有is_activated键的值是否值为1。

Array
(
[0] => Array
    (
    [first_name] => Array
            (
                [0] => john 
            )

        [is_activated] => Array
            (
                [0] => 0
            )
    )

[1] => Array
    (

        [first_name] => Array
            (
                [0] => mark
            )
        [is_activated] => Array
            (
                [0] => 1
            )

    )

[2] => Array
    (

        [first_name] => Array
            (
                [0] => pretik
            )
        [is_activated] => Array
            (
                [0] => 0
            )
    )

)

我已尝试过以下解决方案,但无法获得结果。

$is_user_activated = array_search(1,array_column($activity,'is_activated'));

if($is_user_activated == 1) { echo 'yes'; }
else { echo 'no'; }

3 个答案:

答案 0 :(得分:3)

我认为您希望在循环中执行此操作而不是使用array_search。使用foreach()来获得所需的结果:

foreach($yourArray as $item) {
    if($item['is_activated'][0] == 1) {
        echo 'yes';
    } else {
        echo 'no';
    }
}

答案 1 :(得分:2)

您可以使用array_filter()执行此类任务,它允许使用回调过滤功能:

<?php
$data = [
    [
        'first_name' => ['john'] ,
        'is_activated' => [0]
    ],
    [
        'first_name' => ['mark'],
        'is_activated' => [1]
    ],
    [
        'first_name' => ['pretik'],
        'is_activated' => [0]
    ]
];
$matches = array_filter($data, function($entry) {
    return in_array(1, $entry['is_activated']);
});
var_dump($matches);

输出是:

array(1) {
  [1]=>
  array(2) {
    ["first_name"]=>
    array(1) {
      [0]=>
      string(4) "mark"
    }
    ["is_activated"]=>
    array(1) {
      [0]=>
      int(1)
    }
  }
}

这有点尴尬的原因是你的初始数据有一个非常奇怪的结构:元素的值是数组本身保存实际值而不是标量值本身。这使得搜索比在&#34; normal&#34;中更复杂。的情况。因此,如果您可以修复这个奇怪的结构而不是能够使用更简单的搜索方法,请好好看看。

答案 2 :(得分:0)

您可以通过array_filter

获取已激活的用户
$activated = array_filter($users, function($record) {
    return reset($record['is_activated']) == 1;
});

这只会保留被激活的用户,然后您可以简单地计算数组以查看您是否有任何激活的用户:

echo count($activated) ? 'yes' : 'no';

此处示例:http://ideone.com/mMuJcO