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

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']);   
0
Mikko Kettunen 2 Май 2019 в 15:46

4 ответа

Лучший ответ

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

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

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

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

2
Qirel 2 Май 2019 в 12:50

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

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

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

2
Wendelin 2 Май 2019 в 12:50

По вашему запросу есть только 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);    
0
user3772091 2 Май 2019 в 13:02

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

echo $array[count($array)-1]['weight'];
0
Rakesh Jakhar 2 Май 2019 в 12:48