PHP множественный массив - отображение значения ключа массива с использованием объекта - PullRequest
1 голос
/ 01 февраля 2011
<?php

/* SC: Shop Category */
$SCStatement = "SELECT * FROM  shop_categories";
$SCQuery = mysql_query($SCStatement);

while($SCFetch = mysql_fetch_array($SCQuery)){
    $SCItems[] = array(
        'id' => $SCFetch['id'],
        'name' => $SCFetch['cat_name'],
        'desc' => $SCFetch['cat_description']
    );
}

$SCNumCols = 2;
$SCNumItems = count($SCItems);
$SCNumRows = ceil($SCNumItems / $SCNumCols);



function bindArrayToObject($array) {
    $return = new stdClass();
    foreach ($array as $k => $v) {
        if (is_array($v)) {
            $return->$k = bindArrayToObject($v);
        }
        else {
            $return->$k = preg_replace ('/<[^>]*>/', '', $v);
        }
    }

    return $return;
}

$newObject = bindArrayToObject($SCItems);

echo $newObject->name;

?>

Данные, которые я извлекаю из базы данных, хранятся в массиве $ SCItems []. Проблема в том, когда я повторяю имя $ newObject->; ничего не появится Что добавить этот код, чтобы показать данные, используя $newObject->name; Заранее спасибо.

1 Ответ

0 голосов
/ 01 февраля 2011

Ну, судя по этому коду, у вас есть что-то вроде

$SCItems = Array(
 0 => Array(
  'id' => 1,
  'name' => 'name 1',
  'desc' => 'description 1'
  ),
 1 => Array(
  'id' => 2,
  'name' => 'name 2',
  'desc' => 'description 2'
  ),
);

А потом ваша bindArrayToObject функция пытается построить объект

$newObject = new stdClass(); 
$newbject->0 = new stdClass();
$newbject->0->id = 1;
$newbject->0->name = 'name 1';
$newbject->0->desc = 'description 1';

$newbject->1 = new stdClass();
$newbject->1->id = 2;
$newbject->1->name = 'name 2';
$newbject->1->desc = 'description 2';

Итак, что вам, вероятно, следует сделать, это перебрать ваши $ SCItems и затем при каждой записи использовать bindArrayToObject

Например

$SCObject = Array();
foreach($SCItems as $SCItem) {
 $SCObjects[] = bindArrayToObject($SCItem);
}

Оттуда вы сможете получить доступ к $SCObjects[0]->name, что будет для меня гораздо более логичным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...