Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: как сохранить префикса массива
Форумы портала PHP.SU » PHP » Программирование на PHP » как сохранить префикса массива

Страниц (1): [1]
 

1. sofck - 26 Апреля, 2010 - 12:16:26 - перейти к сообщению
CODE (htmlphp):
скопировать код в буфер обмена
  1. $sql = mysql_query("SELECT * FROM table");
  2. $result =mysql_fetch_array($sql);
  3. do
  4. {
  5. $data[]=$result;
  6. }while($result=mysql_fetch_array($sql));
  7. return $data;


предположим что в table строки id, name, info.
как сделать так что бы в массиве $data сохранялись префиксы из бд?
тоисть $result['name'][0] был в переменной $data['name'][0]
а не в $data[1][0] как сейчас
2. Мелкий - 26 Апреля, 2010 - 12:28:19 - перейти к сообщению
Использовать не mysql_fetch_array, а mysql_fetch_assoc
Только будет $data[0]['id']
3. sofck - 26 Апреля, 2010 - 12:40:49 - перейти к сообщению
Мелкий пишет:
Использовать не mysql_fetch_array, а mysql_fetch_assoc
Только будет $data[0]['id']

а удобный для меня никак вид никак не сохранить??? что без обработки, что то что вы говорить - одинаково не подходит((
4. JustUserR - 26 Апреля, 2010 - 12:57:56 - перейти к сообщению
sofck пишет:
А удобный для меня никак вид никак не сохранить??? что без обработки, что то что вы говорить - одинаково не подходит
Создайте массив $arr=array() и сделайте следующую обработку в цикле while($arr[]=mysql_fetch_assoc($result)) {} - после чего можете напечатать содержимое массива print_r($arr) и убедиться что он действительно является хеш-массивом и содержит необходимые ключи
5. Мелкий - 26 Апреля, 2010 - 13:30:30 - перейти к сообщению
sofck пишет:
а удобный для меня никак вид никак не сохранить???

т.е. именно $data['name'][0]?
Тоже можно:
PHP:
скопировать код в буфер обмена
  1. $sql = mysql_query("SELECT `id`,`name`,`info` FROM `table`");
  2. $data = array();
  3. while($result=mysql_fetch_assoc($sql)) {
  4. $data['id'][]=$result['id'];
  5. $data['name'][]=$result['name'];
  6. $data['info'][]=$result['info'];
  7. };
  8. return $data;


Или для более гибкого варианта - можно с функциями типа key поиграться
6. sofck - 26 Апреля, 2010 - 16:28:17 - перейти к сообщению
JustUserR пишет:
sofck пишет:
А удобный для меня никак вид никак не сохранить??? что без обработки, что то что вы говорить - одинаково не подходит
Создайте массив $arr=array() и сделайте следующую обработку в цикле while($arr[]=mysql_fetch_assoc($result)) {} - после чего можете напечатать содержимое массива print_r($arr) и убедиться что он действительно является хеш-массивом и содержит необходимые ключи

по вашему примеру тоже получаеться
массив такого типа $arr[0]['name'];
(Добавление)
Мелкий пишет:
sofck пишет:
а удобный для меня никак вид никак не сохранить???

т.е. именно $data['name'][0]?
Тоже можно:
PHP:
скопировать код в буфер обмена
  1. $sql = mysql_query("SELECT `id`,`name`,`info` FROM `table`");
  2. $data = array();
  3. while($result=mysql_fetch_assoc($sql)) {
  4. $data['id'][]=$result['id'];
  5. $data['name'][]=$result['name'];
  6. $data['info'][]=$result['info'];
  7. };
  8. return $data;


Или для более гибкого варианта - можно с функциями типа key поиграться


ну это понятно если самому прописать префиксы массива.
А если поля заранее не известны.?
7. Мелкий - 26 Апреля, 2010 - 18:32:01 - перейти к сообщению
sofck, ну про что и говорю: для более гибкого решения можно поиграться.
Например собрать числовой массив, массив с ключами и потом их соединить через array_combine
8. sofck - 26 Апреля, 2010 - 21:20:07 - перейти к сообщению
всем спасибо.... короче в топку!! решил просто везде использовать
mysql_fetch_assoc вместо mysql_fetch_array
))))
9. JustUserR - 27 Апреля, 2010 - 13:19:39 - перейти к сообщению
sofck пишет:
Всем спасибо.... короче в топку!! решил просто везде использовать
mysql_fetch_assoc вместо mysql_fetch_array
))))
Пожалуйтса! Однако к данному моменту я догадался что именно вы хотели сделать - это можно реализовать следующим кодом
PHP:
скопировать код в буфер обмена
  1. $old_arr; /* Здесь массив старого типа */   $new_arr=array(); /* Здесь будет массив новго типа */
  2. for($i=0;$i<count($old_arr);$i++)
  3. {foreach($old_arr[$i] as $key=>val)
  4. {if(is_array($new_arr[$key])) {$new_arr[$key]=array();}
  5. else {}
  6. $new_arr[$key][$i]=$val;
  7. }
  8. }

 

Powered by ExBB FM 1.0 RC1