按整数拆分数组键


Split array keys by integer

我有一个这样的数组:

array(10) { 
    [1]=> string(10) "Question 1"
    ["1a"]=> string(7) "option1"
    ["1b"]=> string(7) "option2"
    ["1c"]=> string(7) "option3"
    ["1d"]=> string(7) "option4"
    [2]=> string(10) "Question 2"
    ["2a"]=> string(7) "option1"
    ["2b"]=> string(7) "option2"
    ["2c"]=> string(7) "option3"
    ["2d"]=> string(7) "option4"
}

我想分割数组并在<li>标记之间回显值。问题是,当我试图循环遍历数组键时,我无法弄清楚如何在数组键中按整数对它们进行排序,并且它会在单独的<li>标签之间回声所有元素,而不是对于包含1的键的五个值,对于包含2的键的六个值,它会回声一个,依此类推

这是我目前使用的php代码:

$form = array();
    foreach($_POST as $key => $val) {
    $q_answers = array();
    if (is_numeric($key)) {
        $question = trim(htmlspecialchars($val));
    } else if (is_string($key) && !empty($val)) {
        $q_answers[] = '<input type="button" value="'.trim(htmlspecialchars($val)).'" data-skip="0" />';
    }
    $form[] = $question.' '.implode(' ', $q_answers);
}
    $result = '
<ul>
    <li>'.implode('</li>
    <li>', $form).'</li>
</ul>';
}

下面是我要找的一个例子:

阵列:

Array(10) {
    [1]=> "Question 1"
    [1a]=> "option1"
    [1b]=> "option2"
    [1c]=> "option3"
    [1d]=> "option4"
    [2]=> "Question 2"
    [2a]=> "option1"
    [2b]=> "option2"
    [2c]=> "option3"
    [2d]=> "option4"
}

输出:

<ul>
    <li>Question 1: option1 option2 option3 option4</li>
    <li>Question 2: option1 option2 option3 option4</li>
</ul>

你可以试试这个:

$array = {};
$options1 = {}
$options2 = {}
$options1[1a] = "option1";
$options1[1b] = "option2";
$options1["Name"] = "Question 1";
$options2[2a] = "option1";
$options2[2b] = "option2";
$options2["Name"] = "Question 2";
$array[1] = $options1;
$array[2] = $options2;
echo("<ul>");
foreach ($array as $option){
echo("<li>" . $option["Name"] . ":");
foreach ($optionas $suboption){
echo(" " . $suboption);
}
echo("</li>");
}
echo("</ul>");

您可以使用函数来快速构建这些数组:)