我有一个数组$info
。我想从这个数组中创建两个数组。
Array
(
[0] => Array
(
[ID] => 7
[type] => general
[description] => <p>One</p>
)
[1] => Array
(
[ID] => 8
[type] => general
[description] => <p>Two</p>
)
[2] => Array
(
[ID] => 9
[type] => rules
[description] => <p>One</p>
)
)
我想从这个数组中创建两个数组。
如果任何数组项类型将是规则,那么这些数组项将转到一个数组,如果任何项类型将是通用的,那么这些数组项将转到另一个数组
我使用此功能但不起作用
function myfunction($products, $needle)
{
foreach($products as $key => $product)
{
if ( $product['type'] === $needle )
$a=array( );
return $a=$product[];
}
return false;
}
我的输出数组就是这个。我在两次调用我的函数。
$output = array(
'status' => $status,
'message' => $message,
'rules'=>myfunction($info,'rules'),
'general'=>myfunction($info,'general')
);
我不知道出了什么问题
答案 0 :(得分:0)
您的功能在与您的类型匹配的第一个项目后停止(请参阅return
?)。其次,在if之后你缺少大括号(如果类型匹配,则只会初始化数组,但每次都会执行返回)。 return $a = $product[];
也没有多大意义,我想它甚至可以编译。以下功能应按预期工作
function myfunction($products, $needle)
{
$a = array();
foreach($products as $key => $product)
{
if ( $product['type'] === $needle ) {
$a[] = $product;
}
}
return $a;
}
但是你不需要自己动作,PHP已经有array_filter
函数:
$rules = array_filter($info, function($item) { return $item['type'] === 'rules'; });
$general = array_filter($info, function($item) { return $item['type'] === 'general'; });