Я пытаюсь повторить последнее значение моего массива. Почему-то ничего не печатает. Я могу повторить конкретное значение, например
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'] всегда будет последним значением, так как оно не в цикле.
Попробуйте print_r($array) если для отладки
попробуйте var_dump($array) и расскажите нам, что там написано
Вам нужен end($array)['weight'], а не end($array['weight']);






Вы можете получить доступ к последнему элементу массива таким образом
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. Не нужно извлекать все, зацикливать и использовать только последний элемент. :-)
Спасибо, это решило проблему. Я новичок в программировании, поэтому ошибки новичка неизбежны: D
Также имейте в виду, когда вам нужно получить доступ к другим элементам: end() продвигает внутренний указатель массива к последнему элементу и возвращает его значение.
По вашему запросу есть только 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);
Является ли
$array['weight']массивом?