【问题标题】:PHP Check if in array an specific value is truePHP 检查数组中的特定值是否为真
【发布时间】:2021-09-28 15:29:39
【问题描述】:

谁能帮帮我。

我正在寻找一种解决方案,如何检查 $testArray 中是否存在 ['value']['content'] == 1 的数组

我试过了:

$bool = in_array('1', array_column($testArray, 'content'));
var_dump($bool);

但是我得到一个返回 FALSE,但是如果你看一下下面的 testArray,你会看到第一个数组有 ['value']['content'] => '1';

<?php

        $testArray = array(
            array(
                'id' => '414-b9108bbe-66e3-4c1e-8a51-03b7b8a0d17c',
                'position' => 0,
                'type' => 'original',
                'value' => array
                    (
                        'comment' => '',
                        'content' => '1',
                        'info' => '',
                        'insight' => '',
                        'label' => '',
                        'report' => '',
                    )

            ),
            array(
                'id' => '414-b9108bbe-66e3-4c1e-8a51-03b7b8a0d18c',
                'position' => 0,
                'type' => 'original',
                'value' => array
                    (
                        'comment' => '',
                        'content' => '',
                        'info' => '',
                        'insight' => '',
                        'label' => '',
                        'report' => '',
                    )

            ),
        );

        echo '<pre>';
        $bool = array_search('content', array_column($testArray, 'value'));
        var_dump($bool);
        echo '</pre>';

我认为它的值是另一个数组,因为我这样做:

$bool = in_array('original', array_column($testArray, 'type'));

输出:真。

【问题讨论】:

  • &amp;&amp; $block['answer'][$which] === 1 ?
  • 我看不到 $block['answer'] 和那些数组之间的连接,抱歉。
  • 为什么你的代码检查数组中的answer,但你列出的例子却没有提到?您是传入 整个 $testArray1$testArray2 作为输入,还是仅传入数组的一个子集?
  • 忘记了函数,它是一个很长的数组和很多检查。有很多不同的数组。我很抱歉把它放在问题中。我无法检查 && $block['answer']['$wich'] 因为那里启动了数组所以你有 $key[0] 和 $key[1 ] 那里的价值和内容.. 如果你知道我的意思。
  • array_filter($testArray, function ($x) {return $x['value']['content']=== '1';});

标签: php object


【解决方案1】:

你可以试试这个。 (对不起我的英语不好,希望你能理解)

// This is a two-dimensional array, you only need to do the array_column operation once more
var_dump(in_array('1', array_column(array_column($testArray, 'value'), 'content')));

【讨论】:

  • 请在您的答案中添加一些解释,以便其他人可以从中学习
【解决方案2】:

尝试以下简单的方法,您可以从数组中找到任何值

function searcharray($value, $key, $array) {
    
   foreach ($array as $k => $val) {
       if ($val[$key] == $value) {
           foreach ($val as $k1 => $val1) {
               if ($val1[$key] == $value) {
                   return true;
               }
           }
           return true;
       }else{
           foreach ($val as $k1 => $val1) {
               if ($val1[$key] == $value) {
                   return true;
               }
           }
           
       }
   }
   return false;
}

var_dump(searcharray('0','position',$testArray));`enter code here`

【讨论】:

  • 请在您的答案中添加一些解释,以便其他人可以从中学习
猜你喜欢
  • 2012-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-13
  • 2011-05-29
  • 2017-09-17
  • 2021-03-12
相关资源
最近更新 更多