Dipali Nigade Ответов: 1

Как удалить значение из массива


У меня есть значения массива, и я хочу удалить first_name из всего суб-массива.
ниже приведен мой массив и некоторый код, который я выполняю, но не получаю ожидаемого результата.

Что я уже пробовал:

<pre>$a = array(
      array(
        'id' => 5698,
        'first_name' => 'Peter',
        'last_name' => 'Griffin',
      ),
      array(
        'id' => 4767,
        'first_name' => 'Ben',
        'last_name' => 'Smith',
      ),
      array(
        'id' => 3809,
        'first_name' => 'Joe',
        'last_name' => 'Doe',
      )
    );


function removeElementWithValue($array, $key){
    foreach($array as $subKey => $subArray)
    {
       // print_r($array);
        if($subArray[$key])
        {
            echo "hi";
            unset($array[$subKey]);
        }
    }
    print_r($array);
}
$data= removeElementWithValue($a, "first_name");

1 Ответов

Рейтинг:
6

Christiaan van Bergen

В вашем коде вы хотите удалить все массивы в массиве $a, которые имеют элемент с ключом "first_name". Вы не проверяете фактическое значение. Попробовать это:

function removeElementWithKey($array, $keyToRemove){
    foreach($array as $subArray)
    {
		foreach(array_keys($subArray) as $keyIndex => $key)
		{
			if ($key == $keyToRemove) 
            {
                array_splice($subArray, $keyIndex, 1);
            }
		}
    }
	return $array;
}
$data= removeElementWithKey($a, 'first_name');
print_r($data);
Я использовал array_splice вместо unset(). Это оставит вашу индексацию в такте.
Вы можете проверить код здесь : PHP код - 39 строк - codepad[^]


Dipali Nigade

нет, я хочу удалить first_name из массива

Christiaan van Bergen

Что? Тогда почему вы формулируете свой вопрос так : "я хочу удалить идентификатор из всего подмассива" ? В этом нет никакого смысла.
Пожалуйста, улучшите свой вопрос!

Dipali Nigade

Да сэр я просто улучшаю это

Christiaan van Bergen

Итак, я вижу, что вы также изменили вызов функции. Итак, вы хотите удалить все элементы ключ-значение с ключом "first_name"? Независимо от фактического значения?

Dipali Nigade

да, я хочу удалить все элементы key-values с first_name

Patrice T

Это хорошая идея, чтобы показать результат, который вы хотите.
Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.

Christiaan van Bergen

Ну вот, я изменил свой ответ. (Кроме того, я взял на себя смелость предложить другое имя функции, вы больше не ищете значение)

Dipali Nigade

Здравствуйте сэр я меняю код но даю предупреждение
Предупреждение: недопустимое смещение строки 'first_name' в D:\wamp\www\core_php_demo\array_demo.php на линии 25

Christiaan van Bergen

Thx для хедз-апа, это проблема с написанием кода в текстовых полях, а не в чем-то, где вы можете его проверить. Я просто обновил ответ и добавил ссылку на codepad.org где вы можете запустить код.