我有一個非常複雜的數組操作,或者至少它對我來說很複雜。比方說,我有這樣一種陣列複雜的數組操作
$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