0

我有这个数组(使用 PHP):

Array
(
[dummy_value_01] => 10293
[other_dummy_value_01] => Text
[top_story_check] => 1
[top_story_hp] => 1
[top_story] => 248637
[top_story_id] => 100
[top_story_text] => 2010
[menu_trend_01] => 248714
[menu_trend_01_txt] => Text 01
[menu_trend_02] => 248680
[menu_trend_02_txt] => Text 02
[menu_trend_03] => 248680
[menu_trend_03_txt] => Text 03
[menu_trend_04] => 248680
[menu_trend_04_txt] => Text 04
[menu_trend_05] => 248680
)

我想只循环 menu_trend_* 值并获得这样的列表:

<ul>
<li>Text 01: 248714</li>
<li>Text 02: 248680</li>
<li>[...]</li>
</ul>

你能建议最好的方法吗?

4

2 回答 2

0

您可以使用它,它将尝试匹配 menu_trend_(DIGIT),如果匹配,将回显所需的文本。

echo '<ul>';
foreach ($array as $key => $val) {


    $matches = array();
    if (!preg_match('/^menu_trend_(\d+)$/', $key, $matches)) {

        continue;
    }

    echo sprintf('<li>Text %s: %s</li>', $matches[1], $val);
}
echo '</ul>';
于 2013-04-08T15:41:23.383 回答
0

我不确定这是最好的方法,但它会起作用:

$output = array();
foreach ($array as $k => $a) {
  if (stristr($k, 'menu_trend_') && !empty($arr[$k . '_txt'])) {
    $output[] = $arr[$k . '_txt'] . ': ' . $a;
  }
}
echo "<ul>\n<li>" . implode("</li>\n<li>", $output) . "</li>\n</ul>";

这是一个工作示例

于 2013-04-08T15:21:57.320 回答