2016-05-11 2 views
1

Почему эта функция не работает? После его вызова печатается тот же массив.function delete_item() from array php

$myArray1 = ["Barcelona", "Romania", "Cile", "France"]; 

function del(&$array, $item_to_del){ 
    foreach ($array as $item) { 
     if ($item == $item_to_del){ 
      unset($item); 

     } 
    } 
} 

del($myArray1, "Barcelona"); 
var_dump($myArray1); 
+0

Потому что вы на самом деле не удаляете элемент в массиве. Вы не устанавливаете '$ item'. –

ответ

0

Вы также должны удалить index.

Попробуйте это:

<?php 

$myArray1 = ["Barcelona", "Romania", "Cile", "France"]; 

function del(&$array, $item_to_del){ 
    foreach ($array as $key => $item) { 
     if ($item == $item_to_del){ 
      unset($array[$key]); 

     } 
    } 
} 

del($myArray1, "Barcelona"); 
var_dump($myArray1); 
+0

Md Mahfuzur Rahman, спасибо, что работает, прохладный. Но это странно, поскольку это не карта. –

1

Просто заменить дель функции с этим. попробуйте следующее:

function del(&$array, $item_to_del){ 
    if (($key = array_search($item_to_del, $array)) !== false) { 
     unset($array[$key]); 
    } 
} 
+0

Что произойдет, если элемент повторяет несколько раз в массиве? –