PHP echo end($array) ничего не печатает

Я пытаюсь повторить последнее значение моего массива. Почему-то ничего не печатает. Я могу повторить конкретное значение, например

echo $array[0]['weight'] 

печатает первое значение.

$query = "SELECT * FROM calorycalc2 WHERE userid = $id[0]";
$result1 = mysqli_query($db, $query) or die(mysqli_error());

$array = array();

while($row = mysqli_fetch_assoc($result1)) {
   $array[] = $row;
}

echo end($array['weight']);   

Является ли $array['weight'] массивом?

Wendelin 02.05.2019 14:48

у тебя есть ошибки?

xmaster 02.05.2019 14:48

Кстати, $array['weight'] всегда будет последним значением, так как оно не в цикле.

Zain Farooq 02.05.2019 14:48

Попробуйте print_r($array) если для отладки

Diogo Santo 02.05.2019 14:48

попробуйте var_dump($array) и расскажите нам, что там написано

xmaster 02.05.2019 14:49

Вам нужен end($array)['weight'], а не end($array['weight']);

Amunium 02.05.2019 14:50
Стоит ли изучать 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 и хотите разрабатывать...
0
6
104
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Вы можете получить доступ к последнему элементу массива таким образом

echo $array[count($array)-1]['weight'];

Как объяснено в php-документыend возвращает последнюю запись в массиве, поэтому я могу догадаться из вашего кода, что вы хотите этого:

echo end($array)['weight'];

Что вы делаете, так это получаете доступ к записи с помощью ключа 'weight'$array['weight'] (я думаю, это число) и передаете это значение функции end. Поскольку функция end ожидает массив, а не число, это приведет к ошибке.

Ответ принят как подходящий

Вам нужно получить последний элемент внешнего массива $array, тогда получить доступ к субиндексу weight.

Обратите внимание, как скобки меняются на месте. end($array) извлекает последний элемент, который сам по себе является массивом, доступ к которому можно получить с помощью ['weight']

echo end($array)['weight']; 

Выполняя echo end($array['weight']);, как вы делали изначально, вы просите PHP получить последний элемент массива, которым является $array['weight'], но такого индекса weight нет (есть только числовые индексы, $array[$x]) в $array.

Тем не менее, если вы собираетесь использовать только последний элемент, вы можете просто получить его непосредственно из MySQL. Не нужно извлекать все, зацикливать и использовать только последний элемент. :-)

Qirel 02.05.2019 14:55

Спасибо, это решило проблему. Я новичок в программировании, поэтому ошибки новичка неизбежны: D

Mikko Kettunen 02.05.2019 15:08

Также имейте в виду, когда вам нужно получить доступ к другим элементам: end() продвигает внутренний указатель массива к последнему элементу и возвращает его значение.

DigiLive 02.05.2019 15:17

По вашему запросу есть только 1 строка результата. Потому что вы обращаетесь к строке результата с указанным идентификатором. В этом случае вам не нужно зацикливать запрос. Это требуется только в том случае, если у вас есть несколько строк результатов. Чтобы получить доступ к последнему элементу

$query = "SELECT * FROM calorycalc2 WHERE userid = $id[0]";
$result1 = mysqli_query($db, $query) or die(mysqli_error());

$array = array();
$row = mysqli_fetch_assoc($result1)
$i = 0;
while($row as $key=>$value) {
   $array[$i] = $value;
   $i++;
}

echo end($array);    

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