我有一个非常复杂的数组操作,或者至少它对我来说很复杂。比方说,我有这样一种阵列复杂的数组操作
$myArr['url_1']['linktypes']['follow'] = 10;
$myArr['url_1']['linktypes']['nofollow'] = 20;
$myArr['url_1']['linktypes']['other'] = 30;
$myArr['url_2']['linktypes']['follow'] = 40;
$myArr['url_2']['linktypes']['nofollow'] = 50;
$myArr['url_2']['linktypes']['other'] = 60;
$myArr['url_3']['linktypes']['follow'] = 70;
$myArr['url_3']['linktypes']['nofollow'] = 80;
$myArr['url_3']['linktypes']['other'] = 90;
和简单的(!),我需要得到下面的结果
array(
array("id"=>1,"metric"=>'follow','url_1'=>10,'url_2'=>40,'url_3'=>70),
array("id"=>2,"metric"=>'nofollow','url_1'=>20,'url_2'=>50,'url_3'=>80),
array("id"=>3,"metric"=>'other','url_1'=>30,'url_2'=>60,'url_3'=>90)
);
这些数组元素将从$ myArr,该创建dynamicall。我尝试了很多方法,但我失败了很多次。希望有人有一个简短的,简单的逻辑来解决这个问题。
谢谢。 编辑:这是我最短的尝试。我有很多不同的方法,但是这个代码是大代码结构的一部分,你在这里看到的例子是为了简化我需要的逻辑而创建的。
$linkStructure = array();
foreach($myArr as $links=>$value){
$counter = 0;
foreach($value['linktypes'] as $ltKey => $ltValue){
if($linkStructure[$counter]["id"] && $linkStructure[$counter]["metric"] == $ltKey){
$linkStructure[$counter][$links] = $ltValue;
}
else{
$linkStructure[$counter]["id"] = $counter;
$linkStructure[$counter]["metric"] = $ltKey;
$linkStructure[$counter][$links] = $ltValue;
}
}
}
我发誓我试过我可以证明更好我不知道。请不要折磨。如果你有任何想法只是分享,我要求太多了吗?
那么,你尝试了什么? –
这不是真正的数组应该如何工作。如果有4个URL,会发生什么情况,你会如何检查这个? – Flukey
许多不同类型的foreach循环,数组函数,但我不想把它们放在这里,因为它们是错误的。如果需要,我可以发布一些,但我不认为他们会有所帮助。 – ufucuk