【问题标题】:check if value exist in each array multidimensional array检查每个数组多维数组中是否存在值
【发布时间】:2016-08-26 03:45:26
【问题描述】:

我有一个多维数组

     <?php

$data = array(
array(
'name'=>'ahmed',
'job'=>'engineer',
'age'=>25,
'hobbies' => array('drawing','swimming','reading'),
'skills' => array('coding','fasting learning','teaching')
),
array(
'name'=>'Sara',
'job'=>'designer',
'age'=>19,
'skills'=>array('fast learning')
) ,
array(
'name'=>'Ali',
'age'=>25,
'city'=>'cairo'
),

array(
'name'=>'Hossam',
'job'=>'accountant',
'age'=>25,
'city'=>'zagazig'
),
array(
'name'=>'Esraa',
'job'=>'Designer',
'age'=>23,
'city'=>'zagazig',
'hobbies' => array('writing','reading'),
'skills' => array('coding','teaching')
),
);

我想要计算 city = "zagazig" 或 "cairo" 的数组

并回显数组值

例子:

  • 城市有[1]人=>[开罗]:

---------------- 结果-----------

  • 姓名 => 阿里

  • 年龄 => 25

  • 城市 => 开罗


如果城市!exist 回显值

例子:

*---------------- 无效数据 -------------

----------- 首先---------------

  • 姓名 => 萨拉

  • 工作 => 设计师

  • 年龄 => 19

  • 技能 => 快速学习

-----------------第二个----------------

  • 姓名 => 艾哈迈德

  • 工作 => 工程师

  • 年龄 => 25

-------------------- 爱好----------------

  • 绘图

  • 游泳

  • 阅读

-------------------------------- 技能----------------

  • 编码

  • 空腹学习

  • 教学


但我不知道如何循环多维数组

【问题讨论】:

  • 你从哪里得到数据?,如果这是从数据库层,为什么不从那里做呢。如果没有,只需使用foreach
  • 你不知道如何循环一个多维数组 :O :O
  • 我已经尝试并搜索了答案,我问别人的最后一件事:D 我发现这个 foreach($data[4] as $array) { echo $array; }
  • 我现在想知道如何计算 city = value 的所有数组

标签: php arrays loops multidimensional-array foreach


【解决方案1】:

鉴于这只是一个原始数组,一个简单的if 和foreach 就足够了。

首先,如果条件是使用city获取某些条目,只需使用stripos进行搜索;

$search_string = 'zagazig';
$results = array();
foreach($data as $value) {
    if(
        !empty($value['city']) &&
        (stripos($value['city'], $search_string) !== false)
    ) {
        $results[] = $value;
    }
}

这会检查条目是否有城市索引,然后将该数组推入容器$result。收集结果后,像任何普通数组一样循环它:

if(!empty($results)) {
    echo 'Number of results: ' , count($results), '<br/> Result <hr/>';
    foreach($results as $r) {
        echo "
        Name: {$r['name']}
        Job: {$r['job']}
        Age: {$r['age']} <br/>
        ";
        echo !empty($r['hobbies']) ? '<br/>Hobbies: <br/>' . implode('<br/>', $r['hobbies']) : '';
    }
}

Output

如果你愿意,当然你可以使用&lt;table&gt;标签,这只是一个丑陋的例子。

如果你喜欢一些不同的东西,你也可以使用array_filter:

这是一个例子(这也包括在 hobbies 和 skills 中的一些搜索):

$search_string = 'coding';
$criteria = 'skills';
$results = array_filter($data, function($e) use ($search_string, $criteria) { 
    return (
        !empty($e[$criteria]) && 
        (!is_array($e[$criteria]) 
            ? (strpos($e[$criteria], $search_string) !== false)
            : (in_array($search_string, $e[$criteria]))
        )
    );
});

Output

【讨论】:

    【解决方案2】:

    使用 php foreach() 像:

    foreach (array_expression as $value)
    {
        statement
    }
    

    Foreach Documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-28
      • 2021-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-05
      相关资源
      最近更新 更多