0

配列に大きな問題があり、キーでグループ化したい(または今はしていません:()

mySQL からリンクを取得し、次のことを行います。

$lien2 = $links2['text'];
$lien2 = stripslashes($lien2);
$lien2 = htmlspecialchars($lien2);
$lien2 = nl2br($lien2);
preg_match_all('#http://.*?\.?([a-zA-Z0-9\-]+)(\.[a-zA-Z0-9]+)/[a-zA-Z0-9\/\*\-\?\&\%\=\,\.\;\#\_]+#i', $lien2, $lien2_result, PREG_SET_ORDER);

これは配列 $lien2_result です:

    Array
(
    [0] => Array
        (
            [0] => links1
            [1] => A
        )

    [1] => Array
        (
            [0] => links2
            [1] => B
        )

)
Array
(
    [0] => Array
        (
            [0] => links3
            [1] => C
        )

)
Array
(
    [0] => Array
        (
            [0] => links4
            [1] => B
        )

)
Array
(
    [0] => Array
        (
            [0] => links5
            [1] => D
        )

)
Array
(
    [0] => Array
        (
            [0] => links6
            [1] => E
        )

)

そして、私は次の結果を得たいです:

A
links1
B
links2
links4
C
links3
D
links5
E
links6
4

1 に答える 1

2

個人的にクエリを調整しますが、この結果セットに行き詰まっている場合は、次のように書き直すことができます

foreach($lien2_result as $lien2){
    foreach($lien2 as $item){
        $arr[$item[1]][] = $item[0];
    }
}

print_r($arr) は次のようになります。

$arr = Array('A' => Array('links1'), 'B' => Array('links2','links4')); //and so on..

そして、あなたが尋ねた方法で実際に印刷します:

foreach($arr as $name => $value){
    echo($name.'<br />');
    foreach($value as $item){
        echo($item.'<br />');
    }
}

編集

ここに例があります http://sandbox.onlinephpfunctions.com/code/c0da893797cb2049e8346168b280a9f5b1fa145b

于 2012-12-09T17:31:29.880 に答える