我有以下兩個假設數組:PHP:將索引陣列基於其他陣列
$values = array("fourth", "first", "second", "third");
$indices = array(3, 0, 1, 2);
什麼是重新排列基於$indices
$values
最快的方法是什麼?
是否有某種方式可以做$values->index_array = $indices
?
我有以下兩個假設數組:PHP:將索引陣列基於其他陣列
$values = array("fourth", "first", "second", "third");
$indices = array(3, 0, 1, 2);
什麼是重新排列基於$indices
$values
最快的方法是什麼?
是否有某種方式可以做$values->index_array = $indices
?
我會怎麼做:
<?php
$newarray = array_fill_keys($indices, $values);
?>
這裏假設你的指數始終是唯一的,當然。
謝謝,這似乎正是我所需要的 – TheWaterIsCold
我不認爲這就是你想要的。它將'$ newarray'的每個元素設置爲相同的值。 – Barmar
然而,他確實做了他所問的。它是完美的嗎?只有OP知道。 –
這只是基於從問題的短語猜測:
的方式來重新安排$值基於$指數
$values = array("fourth", "first", "second", "third"); $indices = array(3, 0, 1, 2);
array_multisort($indices, $values);
var_dump($values);
輸出是:
array(4) {
[0]=>
string(5) "first"
[1]=>
string(6) "second"
[2]=>
string(5) "third"
[3]=>
string(6) "fourth"
}
這不行。如果任何'$ indicies'與PHP分配數組鍵的方式不一致,則鍵值將丟失。 –
@Phillip:OP的責任是保證他們的秩序。請參閱:「根據$索引重新排列$值」 – zerkms
@zerms:足夠公平。無論如何,這個問題很糟糕。時間繼續前進。 –
ZerkMS的回答正如問題所定義的那樣正確,但您最好採用另一種方法來生成結果。
如果可以的話,而不是生成的兩個數組:
$values = array("fourth", "first", "second", "third");
$indices = array(3, 0, 1, 2);
,而不只是產生一個陣列,並呼籲ksort它:
$valuesToSort = array();
$valuesToSort[3] = 'fourth';
$valuesToSort[0] = 'first';
$valuesToSort[1] = 'second';
$valuesToSort[2] = 'third';
ksort($valuesToSort);
@Danack:當OP不能表達自己的想法 - 這是正常) – zerkms
@zerkms你的答案是正確和快速的。礦是正確的,但速度較慢。把它放回去,我會upvote :) – Danack
這將有助於,如果你顯示了所需的結果是什麼。 – Barmar