2016-03-31 9 views
0

Wahrscheinlich am besten mit Codebeispiel erklärt.PHP-Array-Schlüssel ändern, um nach zwei Werten alle zwei Iterationen zu überspringen

Ich habe eine einfache Anordnung mit normalen Schlüsseln um:

$array = array(
    '0' => 'Value', 
    '1' => 'Value', 
    '2' => 'Value', 
    '3' => 'Value', 
    '4' => 'Value', 
); 

Gibt es eine Möglichkeit, es so zu ändern Schlüssel in dieser Reihenfolge kommen?

$array = array(
    '0' => 'Value', 
    '1' => 'Value', 
    '4' => 'Value', 
    '5' => 'Value', 
    '8' => 'Value', 
); 
+2

* Überspringe alle zwei Iterationen nach zwei Werten * - Warum ist dann '8' dort? Nicht klar genug! –

+1

Sorry, '8' war in diesem Beispiel eigentlich' 9'. Danke für das Aufzeigen! –

+0

** Seltsam **. Bis jetzt sagte mir jeder ** 0 ist eine Zahl und am wertvollsten, je nach Position **. @ C0dekid.php –

Antwort

3
$array = array(
    'value', 
    'value', 
    'value', 
    'value', 
    'value', 
    'value', 
    'value', 
    'value' 
); 

$newArray = []; 
$mustSkip = 1; 
$i = 1; 
foreach($array as $key => $value) { 
    $newArray[$i] = $value; 

    if($mustSkip == 2) { 
     $i = $i+3; 
     $mustSkip = 1; 
    } 
    else { 
     $i++; 
     $mustSkip++; 
    } 
} 
echo "<pre>",print_r($newArray,1),"</pre>"; 
exit; 

Ergebnis:

Array 
(
    [1] => value 
    [2] => value 
    [5] => value 
    [6] => value 
    [9] => value 
    [10] => value 
    [13] => value 
    [14] => value 
) 

es selbst getestet.

+0

Ich habe es auch getestet, und es funktioniert. – Jer

1
<pre> 
$newArray = array(); 
$i = 1; 
foreach ($array as $key => $value) { 
    $newArray[$i] = $value; 
    if ($key % 2 && $key) { 
     $i += 3; 
    } else { 
     $i++; 
    } 
} 
var_dump($newArray); 
</pre> 
+0

Dies wurde auch getestet und es funktioniert –

Verwandte Themen