Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查每个多维数组中是否存在值_Php_Arrays_Loops_Multidimensional Array_Foreach - Fatal编程技术网

Php 检查每个多维数组中是否存在值

Php 检查每个多维数组中是否存在值,php,arrays,loops,multidimensional-array,foreach,Php,Arrays,Loops,Multidimensional Array,Foreach,我有一个多维数组 <?php $data = array( array( 'name'=>'ahmed', 'job'=>'engineer', 'age'=>25, 'hobbies' => array('drawing','swimming','reading'), 'skills' => array('coding','fasting learning','teaching') ), array( 'name'=>'Sara', 'jo

我有一个多维数组

     <?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')
),
);
使用php foreach()如下:


鉴于这只是一个原始数组,一个简单的
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']) : '';
    }
}

数据是从哪里获得的?如果这是从db层获得的,为什么不从那里获得呢。如果没有,只需使用一个
foreach
你不知道如何循环多维数组:O:OI我已经尝试并搜索了答案,最后我问了某人:D我找到了这个foreach($data[4]作为$Array){echo$Array;}我现在想知道如何计算city=value的所有数组
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']) : '';
    }
}
$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]))
        )
    );
});