построение многомерного массива из MySQL с помощью PHP - PullRequest
2 голосов
/ 18 марта 2011

Я пытаюсь сформировать конкретный многомерный массив из набора результатов mysql.

Мне бы хотелось, чтобы это выглядело так:

array(
'product_name' => 'prod_1',
'categories' => array(1,2,3,4)
);

Результат db возвращает массив, который выглядиткак-то так

Array
(
[0] => Array
    (
        [id] => 1
        [product_name] => prod_1
    )

[1] => Array
    (
        [id] => 2
        [product_name] => prod_1
    )

[2] => Array
    (
        [id] => 3
        [product_name] => prod_1
    )

[3] => Array
    (
        [id] => 4
        [product_name] => prod_1
    )

Как видите, я хотел бы сгруппировать название продукта и поместить идентификатор в другой массив

У кого-нибудь есть какие-либо советы, как это сделать?

Ответы [ 3 ]

0 голосов
/ 18 марта 2011

Вы пробовали GROUP_CONCAT.Это что-то вроде:

SELECT name, GROUP_CONCAT(name) AS friends FROM friendships GROUP BY name;

Узнайте подробности здесь: http://forums.mysql.com/read.php?10,287931,287936#msg-287936

0 голосов
/ 18 марта 2011
$yourarray = array(array('id'=>1, 'product_name' => 'prod_1'), array('id'=>2, 'product_name' => 'prod_1'), array('id'=>3, 'product_name' => 'prod_1'),array('id'=>4, 'product_name' => 'prod_1'));

$multiarray = array();
foreach ($yourarray as $value) {
    if(!isset($multiarray['product_name'])) {
        $multiarray['product_name'] = $value['product_name'];
    }    
    $multiarray['categories'][] = $value['id'];
}
print_r($multiarray);
0 голосов
/ 18 марта 2011
$yourarray = array(array('id'=>1, 'product_name' => 'prod_1'), array('id'=>2, 'product_name' => 'prod_2'),array('id'=>3, 'product_name' => 'prod_3'));
$multiarray = array();

for($i=0; $i<count($yourarray);$i++){
    $multiarray['product_name'][] = $yourarray[$i]['product_name'];
    $multiarray['product_id'][] = $yourarray[$i]['id'];
}

print_r($yourarray); //original array
print_r($multiarray); //gives you multi array

Что-то похожее на это?

Ваш исходный массив:

Array
(
    [0] => Array
        (
            [id] => 1
            [product_name] => prod_1
        )

    [1] => Array
        (
            [id] => 2
            [product_name] => prod_2
        )

    [2] => Array
        (
            [id] => 3
            [product_name] => prod_3
        )

)

Результат выдаст:

Array
(
    [product_name] => Array
        (
            [0] => prod_1
            [1] => prod_2
            [2] => prod_3
        )

    [product_id] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...