2012-05-23 5 views
2

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

Mouse 
Keyboard //Saved from a Textarea box 
Monitor 

Весь стол выглядит следующим образом;

id || Owner || Items 
-------------------------- 
1 || John || Mouse 
    ||   || Keyboard //This is in a single row 
    ||   || Monitor 
-------------------------- 

Как назначить каждую строку данных из поля «Элементы» в массив (допустим, $ items)?

Так что это будет так:

$items[0] = "Mouse"; 
    $items[1] = "Keyboard"; 
    $items[2] = "Monitor"; 
+0

Поэтому вы хотите, чтобы он выглядел так, как будто «Джон» является владельцем мыши, клавиатуры, и монитор, или что у них у клавиатуры и мыши нет владельца? или просто есть список предметов? – Anthony

+0

Все эти три предмета - это Джонс, но неважно. Я уже получил ответы. Спасибо Vishal –

ответ

4

Try:

$items = explode("\n", $string_from_db); 
+0

Только то, что я хотел. –

0

Вы можете использовать mysql_fetch_assoc()

Или PDOStatement::fetchAll()

Или mysqli_result::fetch_assoc()

+1

Извините, я думаю, вы неправильно поняли мой вопрос. –

+0

@HafizAbdullah - Я думаю, что мы все не понимаем ваш вопрос. Что вы хотите, чтобы окончательный PHP-массив выглядел? – Anthony

+0

Извините, но я уже получил свой ответ. Ответы Вишала. –

0

что-то вроде этого?

$arr = explode("\n",$data); // split into lines 
$categories = explode("||",$arr[0]); 
unset($arr[0]); array_values($arr[0]); // dont want categories anymore 
array_walk($categories,create_function('&$v','$v = trim($v);')); // trim space from categories 
$data = array(); // holds info 
foreach((array)$arr as $key=>$val) { 
    if (substr($val,0,5)=="-----") { continue; } // ignore "-----..." lines 
    $row = explode("||",$val); 
    foreach((array)$row as $key2=>$val2) { 
     $data[ $categories[$key2] ][] = trim($val2); 
    } 
} 

echo "<pre>"; 
print_r($data); 
echo "</pre>"; 

ваш пример с указанным кодом дает:

Array 
(
    [id] => Array 
     (
      [0] => 1 
      [1] =>  
      [2] =>  
     ) 

    [Owner] => Array 
     (
      [0] => John 
      [1] =>   
      [2] =>   
     ) 

    [Items] => Array 
     (
      [0] => Mouse 
      [1] => Keyboard 
      [2] => Monitor 
     ) 

) 
+0

Спасибо за ваш ответ, но почему вы включаете строки в свой код? Таблица, которую я вам показываю, представляет собой таблицу в базе данных mysql. Это не имеет никакого отношения к моей проблеме. Простите, если вы неправильно поняли. –

0

Если я правильно читал последнюю строку, вы хотите:

$results = $db -> query("SELECT Items FROM table"); 

    while($row = $results -> fetch_assoc()) { 
     $items[] = $row['Items']; 
    } 
+0

Если вы хотите, чтобы вся таблица была массивом, вам необходимо нормализовать свои данные, чтобы очистить владельца и идентификатор каждого элемента. – Anthony

Смежные вопросы