这是我的第一个问题,因为我经常找到我要找的东西,但在这里我迷路了。
我通过以下方式创建了一个多维数组:
这是代码 - 从输入到推送:
这是textarea的输入:
VIE-CAI
HAV-VRA
JFK-SYD
这里我在点击后从文本区域获取数据,输入新元素后应该使用目标字符串创建:
$textarea = $_POST['many_destinations'];
$textarea = str_replace(' ', '', $textarea);
$textarea = strtoupper($textarea);
$textarea = preg_split("/(\r\n|\n|\r)/", $textarea);
现在我将这些字符串“爆炸”为数组元素。将它们存储在主数组$ textarea_new
中 foreach($textarea as $row) {
$routes = explode('-', $row);
array_push($textarea_new, $routes);
}
在整个click函数的开头,我将这个数组声明为:
$textarea_new = array();
所以现在我希望它看起来像这样:
$textarea_new = array
(
array("VIE","CAI"),
array("HAV","VRA"),
array("JFK","SYD")
);
编辑:从你的评论中我可以假设它看起来不像这样,因为你没有遇到以下循环的任何问题:
现在我想循环遍历每个路径(子阵列)并输出它,以便我可以单独处理每个子阵列。
我在stackoverflow上发现的最重要的建议之一是以下内容,但它给了我非常奇怪的结果:
foreach ($textarea_new as $route) {
if (is_array($route)){
foreach($route as $destination){
echo $destination." ";
}
}
}
上述功能的输出如下: VIE CAI HAV VRA JFK SYD VIE CAI HAV VRA JFK SYD VIE CAI HAV VRA JFK SYD
但实际上应该只是:
VIE CAI HAV VRA JFK SYD
请告诉我您是否需要更多信息,特别是如果这不是正确的方法。谢谢!
答案 0 :(得分:0)
唯一真正的准备是,首先,将所有字母设置为大写。除此之外,只需编写一个可以一步验证和提取的正则表达式模式,然后就可以循环结果。
代码:(Demo)(Pattern Demo)
$flightpaths = 'VIE-CAI
hav-vra
JFK-SYD';
if (!preg_match_all('~^([A-Z]{3})-([A-Z]{3})$~m', strtoupper($flightpaths), $out, PREG_SET_ORDER)) {
echo 'Invalid Entry';
} else {
foreach ($out as $row) {
echo "Destination #1: {$row[1]}\n";
echo "Destination #2: {$row[2]}\n\n";
}
}
输出:
Destination #1: VIE
Destination #2: CAI
Destination #1: HAV
Destination #2: VRA
Destination #1: JFK
Destination #2: SYD