Php 将无关键帧数组转换为关联数组

Php 将无关键帧数组转换为关联数组,php,Php,下面的代码输出将输出到我们期望的12/5/10位置。原因是array\u search仅对关联数组有效,而explode返回无键数组,因此$k为false,$k+1为1 $s = 'We would like to book a double room form 12/5/10 for three nights.'; $s_arr = explode(' ', $s); $k = array_search('from', $s_arr); $from = $s_arr[$k+1]; echo $

下面的代码输出
输出到我们期望的
12/5/10
位置。原因是
array\u search
仅对关联数组有效,而
explode
返回无键数组,因此
$k
false
$k+1
1

$s = 'We would like to book a double room form 12/5/10 for three nights.';
$s_arr = explode(' ', $s);
$k = array_search('from', $s_arr);
$from = $s_arr[$k+1];
echo $from;
我们可以使用这样的文字定义来验证这一点

$s_arr = array(
  0 => 'We',
  1 => 'would',
  2 => 'like',
  3 => 'to',
  4 => 'book',
  5 => 'a',
  6 => 'double',
  7 => 'room',
  8 => 'form',
  9 => '12/5/10',
  10=> 'for',
  11=> 'three',
  12=> 'nights.');
$k = array_search('from', $s_arr);
$from = $s_arr[$k+1];
echo $from;
这一次,正确的值为
12/5/10


有没有办法将无键数组转换为关联数组?

我会说它这样做是因为您在要分解的原始字符串中拼写了“from”。

我会说它这样做是因为您在要分解的原始字符串中拼写了“from”。

刚刚尝试了第二个代码块,它也失败了!我错过了什么?你为什么要这么做?这个函数的目的似乎是提取日期。如果是这样,使用正则表达式是有意义的。preg_match比array explode往返和array_search快得多。@mario-这些是实现智能响应程序的开始步骤。很多事情都会改变,但现在爆炸+搜索就可以了。你知道,这是一项艰巨的任务!;]自然语言解析器/响应器并不容易。但特别是因为你已经遇到了一个拼写错误,你应该走正则表达式的路线。它更可靠,更短。preg#u match(“#[from]{2,6}\s*(\d+/\d+/\d+)#“,$s,$match)用于捕捉您的约会对象。用于拼写错误,如frm、FROM、form、frrom等。。更容易的。到黑暗面来。刚刚尝试了第二个代码块,它也失败了!我错过了什么?你为什么要这么做?这个函数的目的似乎是提取日期。如果是这样,使用正则表达式是有意义的。preg_match比array explode往返和array_search快得多。@mario-这些是实现智能响应程序的开始步骤。很多事情都会改变,但现在爆炸+搜索就可以了。你知道,这是一项艰巨的任务!;]自然语言解析器/响应器并不容易。但特别是因为你已经遇到了一个拼写错误,你应该走正则表达式的路线。它更可靠,更短。preg#u match(“#[from]{2,6}\s*(\d+/\d+/\d+)#“,$s,$match)用于捕捉您的约会对象。用于拼写错误,如frm、FROM、form、frrom等。。更容易的。到黑暗的一面来。刚刚测试了这段代码并更正了拼写,它工作得很好。@Majid-我建议使用Netbeans或其他IDE-这会使识别像这样的打字错误变得更容易。另外,将错误日志设置为包含E_通知,并密切关注错误日志()刚刚测试了这段代码,拼写已更正,效果很好。@Majid-我建议使用Netbeans或其他IDE-这将更容易识别这样的打字错误。另外,将错误日志设置为包含E_通知,并密切关注错误日志()