の末尾に奇数のキーを追加しインターレース配列、私が持っていると、配列は、ここでの例であるアレー
0 apples
1 oranges
2 peaches
3 pears
4 watermelon
それがあれば問題ありません。この
0 apples
2 peaches
4 watermelon
1 oranges
3 pears
のようなものは、私は何を探していますです配列キーが変わるかどうか、私は値の場所が必要です。
の末尾に奇数のキーを追加しインターレース配列、私が持っていると、配列は、ここでの例であるアレー
0 apples
1 oranges
2 peaches
3 pears
4 watermelon
それがあれば問題ありません。この
0 apples
2 peaches
4 watermelon
1 oranges
3 pears
のようなものは、私は何を探していますです配列キーが変わるかどうか、私は値の場所が必要です。
<?php
$fruit = array('apples', 'oranges', 'peaches', 'pears', 'watermelon');
function fruitCmp($a, $b) {
if ($a == $b) {
return 0;
}
$aIsOdd = $a % 2;
$bIsOdd = $b % 2;
if (($aIsOdd && $bIsOdd) || (!$aIsOdd && !$bIsOdd)) {
return $a < $b ? -1 : 1;
}
if ($aIsOdd && !$bIsOdd) {
return 1;
}
if (!$aIsOdd && $bIsOdd) {
return -1;
}
}
uksort($fruit, 'fruitCmp');
var_dump($fruit);
出力:例えば
array(5) {
[0]=>
string(6) "apples"
[2]=>
string(7) "peaches"
[4]=>
string(10) "watermelon"
[1]=>
string(7) "oranges"
[3]=>
string(5) "pears"
}
うーん、このような何か試してください:あなたは二つの配列となってしまいます
<?php
$fruits = array('apples', 'oranges', 'peaches', 'pears', 'watermelon');
$odds = array();
$evens = array();
for($i = 0; $i < count($fruits); $i++){
if($i % 2){
$odds[] = $fruits[$i];
} else {
$evens[] = $fruits[$i];
}
}
?>
をあなたが望むように、あなたはオッズで作業することができ、その後に追いついにオッズを追加(配列を結合:$組み合わせ= $ evens + $ odds;)。
これは動作していて、私がそれをやる予定をかなり確認しています。ありがとう!オッズとエヴェンスの後の '[]'括弧がありません。これを行うための他の方法があるかどうか分かりませんか? hmm – ThomasReggi
ありがとう、私は訂正をしました。 – AVProgrammer
多くのオプション、:
foreach($a as $n => $v)
$out[(($n & 1) << 24) | $n] = $v;
ksort($out);
または
foreach($a as $n => $v)
$out[$n & 1][] = $v;
$out = array_merge($out[0], $out[1]);
あなたが元の配列を変更する必要がある、またはそれをするのに十分ですか新しい配列を作成しますか? – Gabe
私には関係ありません。 – ThomasReggi