Array_map - ошибка «Переданный аргумент должен быть типа массив, заданная строка»

Я не уверен, почему следующее не работает. Я получаю указанную выше ошибку (тема):

$array = array (); //something goes in here

function del_space(array $a){
foreach($a as $key => $value){
    preg_replace("/; +/", "", $value); 
    }
}

$no_space = array_map("del_space", $array); 

Какая линия? Ошибка кажется очевидной.

Script47 13.06.2018 19:18

Я передаю ему массив, и он дает мне сообщение, что это строка. Я проверяю это с помощью is_array () на одну строку над кодом. Это сокращенная версия. Это взято из того, что я пишу в среде IDE.

user9731806 13.06.2018 19:19

массив пуст?

Liam G 13.06.2018 19:21
eval.in/1020730 - Проверьте это.
user9731806 13.06.2018 19:23

Если вы ищете в массиве непространство, просто используйте встроенную функцию trim ();

Mawia HL 13.06.2018 19:27

Разместите свой фактический код в своем актуальный вопрос. В коде, на который вы ссылаетесь на eval.in, есть дополнительная инструкция, которая является источником вашей ошибки.

Sammitch 13.06.2018 19:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
6
6 801
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

array_map() зацикливает для вас $array, и поэтому я предполагаю, что каждый элемент внутри $array не является объектом массива, но del_space() требует, чтобы массив был передан ему.

Похоже, у вас есть:

$array = array( 'some item' ); // Fails

но вам нужно что-то вроде:

$array = array( array( 'some item' ) ); // Success

если вы хотите использовать array_map()

Проверьте URL-адрес eval.in. Это массив, и он не работает.

user9731806 13.06.2018 19:28

@ gs3 У меня встреча, проверю позже.

MonkeyZeus 13.06.2018 19:28
Ответ принят как подходящий

Ваша функция del_space принимает в качестве аргумента массив. array_map сам принимает каждый элемент массива (второй аргумент) и отправляет его функции обратного вызова (первый аргумент). Поэтому, если у вас нет массива массивов, это не сработает. Ваш пример должен выглядеть так:

$array = ['lblab; la'];

function del_space($a){
    return preg_replace("/; +/", "", $a); 
}

$no_space = array_map("del_space", $array);
print_r($no_space);

Дает вывод:

Array ( [0] => lblab;la)

Если вы хотите передать массив массивов, то ввод должен выглядеть так:

$array = [
     ['blabla; bla'],
     ['blabla2; bla2'],
];

function del_space(array $a){
    foreach($a as $key => $value){
        $a[$key] = preg_replace("/; +/", "", $value); 
    }

    return $a;
}

$no_space = array_map("del_space", $array);
print_r($no_space);

С выходом:

Array ( [0] => Array ( [0] => blablabla ) [1] => Array ( [0] => blabla2bla2 ) )

Понял, спасибо! Это самый первый день, когда я пишу код, но после примерно 11 месяцев теоретического образования. Спасибо! Могу я спросить, как долго нужно поправляться / чувствовать прогресс?

user9731806 13.06.2018 19:33

Пожалуйста, я рад, что у вас все получилось. Трудно сказать, я думаю, что с PHP относительно легко изучить основы, но есть чему учиться каждый день :) php.net - отличная отправная точка, здесь есть подробное описание каждой функции с множеством примеров.

spielerds 13.06.2018 19:37

Другие вопросы по теме