Juste un additif.
Je sais que c'est vieux, mais je voulais ajouter une solution, je ne vois pas ce que je suis venu avec moi-même. Trouve cette question alors que sur la chasse d'une solution différente et juste pensé: "eh Bien, pendant que je suis ici."
Tout d'abord, Neal's réponse est bonne et idéal pour une utilisation après l'exécution de la boucle, cependant, je préfère faire tout le travail à la fois. Bien sûr, dans mon cas précis, j'ai eu à faire plus de travail que ce simple exemple ici, mais la méthode s'applique toujours. J'ai vu où un couple d'autres ont suggéré foreach
boucles, cependant, cela reste encore à vous après le travail, en raison de la nature de la bête. Normalement, je suggère les choses les plus simples comme foreach
, cependant, dans ce cas, il est préférable de se rappeler le bon vieux façonné for loop
logique. Simplement utiliser i
! Pour maintenir l'indice approprié, juste soustraire i
après chaque suppression d'un élément de Tableau.
Voici mon simple, travail exemple:
$array = array(1,2,3,4,5);
for ($i = 0; $i < count($array); $i++) {
if($array[$i] == 1 || $array[$i] == 2) {
array_splice($array, $i, 1);
$i--;
}
}
Sortie:
array(3) {
[0]=> int(3)
[1]=> int(4)
[2]=> int(5)
}
Cela peut avoir de nombreuses implémentations simples. Par exemple, mon cas exact de détention obligatoire du dernier élément de matrice multidimensionnelle basée sur les valeurs. Je vais vous montrer ce que je veux dire:
$files = array(
array(
'name' => 'example.zip',
'size' => '100000000',
'type' => 'application/x-zip-compressed',
'url' => '28188b90db990f5c5f75eb960a643b96/example.zip',
'deleteUrl' => 'server/php/?file=example.zip',
'deleteType' => 'DELETE'
),
array(
'name' => 'example.zip',
'size' => '10726556',
'type' => 'application/x-zip-compressed',
'url' => '28188b90db990f5c5f75eb960a643b96/example.zip',
'deleteUrl' => 'server/php/?file=example.zip',
'deleteType' => 'DELETE'
),
array(
'name' => 'example.zip',
'size' => '110726556',
'type' => 'application/x-zip-compressed',
'deleteUrl' => 'server/php/?file=example.zip',
'deleteType' => 'DELETE'
),
array(
'name' => 'example2.zip',
'size' => '12356556',
'type' => 'application/x-zip-compressed',
'url' => '28188b90db990f5c5f75eb960a643b96/example2.zip',
'deleteUrl' => 'server/php/?file=example2.zip',
'deleteType' => 'DELETE'
)
);
for ($i = 0; $i < count($files); $i++) {
if ($i > 0) {
if (is_array($files[$i-1])) {
if (!key_exists('name', array_diff($files[$i], $files[$i-1]))) {
if (!key_exists('url', $files[$i]) && key_exists('url', $files[$i-1])) $files[$i]['url'] = $files[$i-1]['url'];
$i--;
array_splice($files, $i, 1);
}
}
}
}
Sortie:
array(1) {
[0]=> array(6) {
["name"]=> string(11) "example.zip"
["size"]=> string(9) "110726556"
["type"]=> string(28) "application/x-zip-compressed"
["deleteUrl"]=> string(28) "server/php/?file=example.zip"
["deleteType"]=> string(6) "DELETE"
["url"]=> string(44) "28188b90db990f5c5f75eb960a643b96/example.zip"
}
[1]=> array(6) {
["name"]=> string(11) "example2.zip"
["size"]=> string(9) "12356556"
["type"]=> string(28) "application/x-zip-compressed"
["deleteUrl"]=> string(28) "server/php/?file=example2.zip"
["deleteType"]=> string(6) "DELETE"
["url"]=> string(45) "28188b90db990f5c5f75eb960a643b96/example2.zip"
}
}
Comme vous le voyez, je manipule $i avant de la jonction, comme je suis à la recherche de supprimer le précédent, plutôt que le présent article.