如何将数组拆分为多个部分并添加新键(cakephp 2.5)
经过研究,我仍在寻找解决方案 我在我的控制器中得到了这个数组,我想作为下面的结果进行分离。这意味着添加一个带有uid引用的键 谢谢 原始阵列:如何将数组拆分为多个部分并添加新键(cakephp 2.5),php,arrays,cakephp,Php,Arrays,Cakephp,经过研究,我仍在寻找解决方案 我在我的控制器中得到了这个数组,我想作为下面的结果进行分离。这意味着添加一个带有uid引用的键 谢谢 原始阵列: array( 'team_id-43' => '1', 'view-43' => '1', 'edit-43' => '1', 'timesheet-43' => '1', 'holiday-43' => '0', 'author-43' => '12', 'te
array(
'team_id-43' => '1',
'view-43' => '1',
'edit-43' => '1',
'timesheet-43' => '1',
'holiday-43' => '0',
'author-43' => '12',
'team_id-44' => '1',
'view-44' => '0',
'edit-44' => '1',
'timesheet-44' => '0',
'holiday-44' => '0',
'author-44' => '12'
)
通缉结果:
$uid43 = array(
'team_id' => '1',
'user_id' => 43
'view' => '1',
'edit' => '1',
'timesheet' => '1',
'holiday' => '0',
'author' => '43',
))
)) 下面的代码将把你的数组(这里称为
$test
)转换成你想要的两个数组
foreach ($test as $key => $value) {
$keyIndex = explode('-', $key);
$keyIndex = $keyIndex[count($keyIndex) - 1];
if (is_numeric($keyIndex)) {
$newKey = str_replace('-' . $keyIndex, '', $key);
$arrayName = 'uid' . $keyIndex;
if (!isset($$arrayName)) {
$$arrayName = array();
}
${$arrayName}["$newKey"] = $value;
}
}
print_r($uid43);
print_r($uid44);
建议您使用
preg\u match()
。例如:
$newArr = array();
foreach($arr as $key=>$val){
preg_match( '/-\d+/', $key, $matches);
$ind = trim($matches[0], '-');
if(is_numeric($ind)){
$px = str_replace($matches[0], '', $key);
$newArr['uid'.$ind][$px] = $val;
}
}
extract($newArr, EXTR_PREFIX_SAME, "wddx");
print '<pre>';
print_r($uid43);
print_r($uid44);
print '</pre>';
$newArr=array();
foreach($arr作为$key=>$val){
预匹配('/-\d+/',$key,$matches);
$ind=trim($matches[0],'-');
如果(是数字($ind)){
$px=str_replace($matches[0],“”,$key);
$newArr['uid'.$ind][$px]=$val;
}
}
摘录($newArr,EXTR_前缀相同,“wddx”);
打印“”;
印刷费($uid43);
印刷费($uid44);
打印“”;
非常感谢,这正是我想要的。我现在需要分析你的代码来理解。再次感谢;)你是如何得到这个数组的?也许我们可以帮你做一个更好的查询。也谢谢;)我尝试了两种功能。两者都很好地工作;)
$newArr = array();
foreach($arr as $key=>$val){
preg_match( '/-\d+/', $key, $matches);
$ind = trim($matches[0], '-');
if(is_numeric($ind)){
$px = str_replace($matches[0], '', $key);
$newArr['uid'.$ind][$px] = $val;
}
}
extract($newArr, EXTR_PREFIX_SAME, "wddx");
print '<pre>';
print_r($uid43);
print_r($uid44);
print '</pre>';