Я изучаю PHP и код воспламенителя, и я новичок в современном программировании в целом, поэтому, пожалуйста, будьте добрыми!Устранение неполадок foreach loop для многомерного массива с объектами StdClass
Я написал функцию для генерации еженедельных итогов километров, проложенных на велосипеде из таблицы mysql. Моя функция генерирует многомерный массив с объектами Std Class. Когда я пытаюсь повторить результат в файле моего вида, я получаю сообщение об ошибке: Ошибка: Сообщение: объект класса stdClass не может быть преобразован в строку.
Я пробовал инструкции о том, как сделать петли foreach для многомерных массивов примерно в десять потоков, включая this one. Кажется, мне нужна вложенная структура foreach, однако я не понимаю, как применять эти примеры к моему коду.
// в моем контроллере индексной функции
$weeknumber = array(0, 1, 2, 3, 4, 5, 6, 7);
$bikedata['sums_for_table'] = array_map(array($this->bike_model,
'get_weekly_sum'), $weeknumber);
// в моей модели
public function get_weekly_sum($when)
{
$this->db->select_sum('distance');
$this->db->where("WEEK (date) = WEEK(current_date) - $when AND YEAR(date) = YEAR(current_date)");
$query = $this->db->get('bike_stats');
return $query->result();
// на мой взгляд (обрезается для простоты. Это на самом деле стол.)
foreach ($sums_for_table as $sum_array):
foreach ($sum_array as $key => $object):
echo $object;
endforeach;
endforeach;
Функция работает правильно в том, что массив, возвращаемый функциями (ниже, из var_dump), имеет информацию I w (цифры 63.2 и т. д.), но мне трудно понять, как использовать информацию в этой форме.
array(8) {
[0]=> array(1) { [0]=> object(stdClass)#23 (1) { ["distance"]=> string(4) "63.2" } }
[1]=> array(1) { [0]=> object(stdClass)#24 (1) { ["distance"]=> string(5) "111.9" } }
[2]=> array(1) { [0]=> object(stdClass)#25 (1) { ["distance"]=> string(4) "48.2" } }
[3]=> array(1) { [0]=> object(stdClass)#26 (1) { ["distance"]=> NULL } }
[4]=> array(1) { [0]=> object(stdClass)#27 (1) { ["distance"]=> string(4) "26.7" } }
[5]=> array(1) { [0]=> object(stdClass)#28 (1) { ["distance"]=> string(4) "42.2" } }
[6]=> array(1) { [0]=> object(stdClass)#29 (1) { ["distance"]=> string(4) "32.3" } }
[7]=> array(1) { [0]=> object(stdClass)#30 (1) { ["distance"]=> string(4) "10.9" } } }
Мой главный вопрос - как я могу исправить код файла вида, чтобы правильно выводить числа в этом массиве. Однако, если бы я мог написать свою функцию по-другому, чтобы создать регулярный ассоциативный массив, я бы тоже хотел это знать!
Любая помощь была бы высоко оценена!
Awesome, Gries. Спасибо! Теперь это работает отлично. Я пробовал что-то по строкам объекта $ object->, но я не знал, чтобы указать нулевой ключ. Моя таблица теперь отображается отлично, так что теперь, на следующий шаг, превратив это в гистограмму! И еще спасибо за более чистый код. Я собираюсь поиграть с этим и посмотреть, как это работает; выглядит как хороший способ еще раз использовать свойство $ object->, чтобы помочь его изучить. Те из нас, кто учится самостоятельно, действительно ценят вдумчивые ответы, такие как ваши! – Cyclist
Альтернативный код изначально генерировал сообщение об ошибке «пытается получить свойство nonobject». Затем я добавил ключ от нуля, и он отлично поработал! Таким образом, последняя строка кода контроллера становится: $ bikedata ['sums_for_table'] [$ weeknumber] = $ weekResult [0] -> distance; – Cyclist