Как извлечь значение из нескольких строк, которое содержит несколько значений, разделенных запятой, в один массив в php, используя pdo mysql - PullRequest
0 голосов
/ 07 января 2019

У меня есть имя таблицы таблиц базы данных. Теперь мне нужно получить значение из нескольких значений строки (позиция имени столбца), которое содержит несколько значений, разделенных запятой. Теперь мне нужно получить значения из нескольких строк в массив, используя pdo php. Спасибо заранее
enter image description here

<?php
require_once "includes\config.php";

$sql = 'SELECT * FROM books WHERE shelf_no=2';
$stmt = $db->prepare($sql);
$stmt->execute();
$row = $stmt->fetchALl(PDO::FETCH_ASSOC);
$d = array();
foreach ($row as $value) {
$d[] = explode(",",$value['position']);
}

print_r($d);
?>

и результат

Array (
  [0] => Array (
    [0] => b1 
    [1] => b2 
  ) 
  [1] => Array ( 
    [0] => a2 
    [1] => a3
  )
)

но мне нужны все значения в одном массиве

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Вы также можете заменить свой

$d[] = explode(",",$value['position']);

с

array_merge($d, explode(',', $value['position']));

Это создаст один массив, а не массив массивов. Больше информации о array_merge на php.net.

Многие функции PHP более производительны, чем эквивалент, написанный на PHP. То есть это может быть быстрее, чем вложенный цикл foreach. Как всегда, если это важно для вас, время в обоих направлениях.

0 голосов
/ 07 января 2019

Вы взрываете его (создаете новый массив) и затем добавляете этот массив в другой массив.

Вы можете просмотреть каждое значение в разобранной строке и добавить их:

<?php
require_once "includes\config.php";

$sql = 'SELECT * FROM books WHERE shelf_no=2';
$stmt = $db->prepare($sql);
$stmt->execute();
$row = $stmt->fetchALl(PDO::FETCH_ASSOC);
$d = array();
foreach ($row as $value) {
    $temp = explode(",",$value['position']);
    foreach($temp as $pos){
        array_push($d, trim($pos));
    }   
}

print_r($d);
?>

Если есть дубликаты, они покажут.

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