我正在尝试只过滤出此数组的一部分-通过channel:
Array
(
[0] => Array
(
[268a9d2d25fc2b9765c7cd7b8a768d3e] => Array
(
[dj_name] => Emilian
[channel] => techno
)
[5d1838c3aa6344e3109ab4f0122492f7] => Array
(
[dj_name] => Emilian
[channel] => trance
)
)
[1] => Array
(
[e13268de7c56db42f8aeab2ab4c607f2] => Array
(
[dj_name] => John Doe
[channel] => trance
)
[1aa81b7b123321f79571828600db0f08] => Array
(
[dj_name] => John Doe
[channel] => techno
)
)因此,结果应该是(如果通道是催眠):
Array
(
[0] => Array
(
[5d1838c3aa6344e3109ab4f0122492f7] => Array
(
[dj_name] => Emilian
[channel] => trance
)
)
[1] => Array
(
[e13268de7c56db42f8aeab2ab4c607f2] => Array
(
[dj_name] => John Doe
[channel] => trance
)
)..。我尝试过foreach循环...取消但没有太多的成功..还有array_filter ...
对于foreach,我尝试这样做(但我不知道在循环关闭后如何更新$show_data数组……嗯,我是php的新手:
foreach($show_data as $idindex => $codearray){
foreach($codearray as $codestring => $paramarray) {
foreach($paramarray as $param => $val) {
if(preg_grep('/trance/', $paramarray)){
unset($paramarray[$val]);
}}}}
print_r($show_data);我也尝试过(但如果第一个是催眠,那么它不会过滤掉其他的.即使他们是电子音乐...
$genre = 'trance';
$data = array_filter($dataraw, function($fs) use ($genre) {
return current($fs)['channel'] === $genre;
});提前感谢!
发布于 2016-01-26 18:25:03
试试这个:它会帮你的。
$output_array();
$i = 0;
foreach ($show_data as $data) {
foreach ($data as $subdata) {
if ($subdata['channel'] == 'trance') {
$output_array[$i] = $subdata;
}
}
$i++;
}
echo '<pre>';
print_r($output_array);
die;发布于 2016-01-26 18:31:15
尝试此代码:-
$result = [];
foreach($arr as $key=>$val){
foreach($val as $k=>$v){
if($v['channel']=='trance'){
$result[$k] = $v;
}
}
}
echo '<pre>'; print_r($result);输出:-
Array
(
[5d1838c3aa6344e3109ab4f0122492f7] => Array
(
[dj_name] => Emilian
[channel] => trance
)
[e13268de7c56db42f8aeab2ab4c607f2] => Array
(
[dj_name] => John Doe
[channel] => trance
)
)https://stackoverflow.com/questions/35011514
复制相似问题