繁体   English   中英

PHP数组根据两个键查找值

[英]PHP array Finding values based on two keys

我有一个从mysql查询得到的数组

key1    key2     value

10      2       url_A
10      1       url_B
9       3       url_C
9       2       url_D
9       1       url_E
7       1       url_f

我想在html中将它放入这种格式。

<ul class="main">
    <li id="10">
        <ul>
            <li>url_A</li>
            <li>url_B</li>
        </ul>
    </li>
     <li id="9">
        <ul>
            <li>url_C</li>
            <li>url_D</li>
            <li>url_E</li>
        </ul>
    </li>
    <li id="7">
        <ul>
            <li>url_F</li>
        </ul>
    </li>
</ul>

我怎样才能使用foreach()(或者有更好的方法)并完成这项工作?

这是我现在如何获得我的阵列。

$result = mysql_query($sql) or die(mysql_error()); 
while($data = mysql_fetch_object($result)){
        $Items[] = array(   
            'key1' => $data->pID1,
            'key2' => $data->ID2,
            'value' => $data->urlString, 
        );
        }

您也可以使用两个键构建数组:

while ($data = mysql_fetch_object($result)) {
    $Items[$data->pID1][$data->ID2] = $data->urlString;
}

然后把整个东西组装在一起:

echo '<ul class="main">';
foreach ($Items as $pid => $data) {
    printf('<li id="%s"><ul>', $pid);
    foreach ($data as $item) {
        printf('<li>%s</li>', htmlspecialchars($item, ENT_QUOTES, 'UTF-8'));
    }
    echo '</ul></li>';
}
echo '</ul>';

顺便说一句,除非你使用HTML5,否则你不应该为你的元素使用数字标识符。

<?php
$arr[10][2] = "url_A";
$arr[10][1] = "url_B";
$arr[9][3] = "url_C";
$arr[9][2] = "url_D";
$arr[9][1] = "url_E";
$arr[7][1] = "url_F";

?>
<ul class="main">
<?php
foreach ($arr as $key => $val) {
    echo "<li id='$key'>\n\t<ul>";
    foreach ($val as $item_key => $item) {
        echo "\n\t<li>$item</li>";
    } 
    echo "\n\t</ul>\n</li>\n";
} 

?>
</ul>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM