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]))
)
);
});