嘿,我有一個巨大的數組回來作爲搜索結果,我要做到以下幾點:PHP數組解析
整個數組,然後用相同的「spubid」添加下列鍵每條記錄行走/在這種情況下vals:「sfirst,smi,slast」到父數組成員$ a [0]。所以結果會保留$ a [0],但增加它,來自sfirst,smi的值和數組中的其他成員的值(因爲它們都具有相同的「spubid」)。我認爲將關鍵值(1,2,3)添加到關聯關鍵字(sfirst1 =>「J.」,smi1 =>「F。」,slast1 =>「Kennedy」)會很好。然後,我想用該「spubid」刪除(unset())數組中其餘的成員。這裏是陣列我得到回來,在這個例子中的所有記錄具有相同的「spubid」的一個簡單的例子:
Array (
[0] =>
Array (
[spubid] => A00502
[sfirst] => J.
[smi] => A.
[slast] => Doe
[1] =>
Array (
[spubid] => A00502
[sfirst] => J.
[smi] => F.
[slast] => Kennedy
[2] =>
Array (
[spubid] => A00502
[sfirst] => B.
[smi] => F.
[slast] => James
[3] =>
Array (
[spubid] => A00502
[sfirst] => S.
[smi] => M.
[slast] => Williamson
)
)
所以在本質上我要保持$ A [0],但添加新鍵=>值(sfirst $ key,smi $ key,slast $ key),並從所有具有相同「spubid」的成員中追加「sfirst,smi,slast」的值,然後取消設置$ a [1] - [3]。
只是爲了澄清我的理想最終結果將是:
Array (
[0] =>
Array (
[spubid] => A00502
[sfirst] => J.
[smi] => A.
[slast] => Doe
[sfirst1] => J.
[smi1] => F.
[slast1] => Kennedy
[sfirst2] => B.
[smi2] => F.
[slast2] => James
[sfirst3] => S.
[smi3] => M.
[slast3] => Williamson
)
)
在大多數情況下,我將有一個更大的陣列開始與包括「spubid」的衆多,但出版物的99%的不止一個作者,所以這個例程對於清理結果和使顯示的解析過程更容易很有用。
*** UPDATE
我認爲在我的簡化例子,我可能已經使事情不清楚。我喜歡Chacha102和Zombat的反應,但是我的「父數組」包含的不僅僅是pubid,而且恰好是主鍵。我需要保留大量的從記錄的其他數據,這方面的一個小部分如下:
[spubid] => A00680
[bactive] => t
[bbatch_import] => t
[bincomplete] => t
[scitation_vis] => I,X
[dentered] => 2009-08-03 12:34:14.82103
[sentered_by] => pubs_batchadd.php
[drev] => 2009-08-03 12:34:14.82103
[srev_by] => pubs_batchadd.php
[bpeer_reviewed] => t
[sarticle] => A case study of bora-driven flow and density changes on the Adriatic shelf (January 1987)
.
.
.
.
.
大概有40列是回來與每個搜索查詢。這些例子並非像pubid那樣對它們進行硬編碼,而是如何在包含它們的同時仍然按照您的建議進行更改。作爲多維的一部分,創建一個多維數組是非常好的,謝謝你的建議。
**** UPDATE:
這裏是我看中了一個解決方案,很簡單的,並得到很好地完成任務。我最終創建了一個多維數組,以便作者在那裏被打破。
在簡化的解決方案:
$apubs_final = array();
$spubid = NULL;
$ipub = 0;
foreach($apubs as $arec)
{
if($spubid != $arec['spubid'])
{
$ipub++;
$apubs_final[$ipub] = $arec;
// insert UNSET statements here for author data
$iauthor = 0;
$spubid = $arec['spubid'];
}
$iauthor++;
$apubs_final[$ipub]['authors'][$iauthor]['sauthor_first'] = $arec['sfirst'];
}
感謝大家誰回答,你的幫助是/是非常感謝!
這就是一個很高的順序。 – 2009-08-03 22:29:09
可能更容易得到一個作者數組數組,每個數組都包含sfirst,smi和slast? – 2009-08-03 22:32:52
在那裏,我爲你做了兩種方式的回答,因爲你願意轉換爲不同的格式。 – 2009-08-03 22:49:19