Php 多行和多数组
我正在从Asterisk获取包含两列的行,并希望分别处理每一行和每一列Php 多行和多数组,php,arrays,Php,Arrays,我正在从Asterisk获取包含两列的行,并希望分别处理每一行和每一列 $showmembers = shell_exec('asterisk -rx "database show QM/Exten" |head -n -1 | sed "s#/QM/Exten/##" | tr -d ":" |while read a b; do echo "$a, $b"; done'); 这会产生如下结果: 1111, 2222 3333, 4444 5555, 6666 让我们将第一列称为“numb
$showmembers = shell_exec('asterisk -rx "database show QM/Exten" |head -n -1 | sed "s#/QM/Exten/##" | tr -d ":" |while read a b; do echo "$a, $b"; done');
这会产生如下结果:
1111, 2222
3333, 4444
5555, 6666
让我们将第一列称为“number”,第二列称为“agent”。
我希望在每一行上运行foreach循环,并在每次迭代中分别回显“number”和“agent”值
我得到的最接近的结果如下:
$showmembers = shell_exec('asterisk -rx "database show QM/Exten" |head -n -1 | sed "s#/QM/Exten/##" | tr -d ":" |while read a b; do echo "$a, $b"; done');
$members = explode(PHP_EOL, $showmembers);
foreach($members as $m) {
echo "$m", PHP_EOL ;
}
它只输出以下内容:
1996, 3079
1997, 3001
1998, 3123
有什么提示吗?运行填充代码后,您将有两个数组:第一列数字为array
$numbers
,第二列数字为array$agents
:
$showmembers = shell_exec('asterisk -rx "database show QM/Exten" |head -n -1 | sed "s#/QM/Exten/##" | tr -d ":" |while read a b; do echo "$a, $b"; done');
$members = explode(PHP_EOL, $showmembers);
$numbers = $agents = array();
foreach($members as $m) {
$tmp = explode(",", preg_replace('/ /', '', $m));
$numbers = $tmp[0];
$agents = $tmp[1];
}
谢谢各位。虽然我不能让你们的两个例子都按原样工作,但它确实让我更接近于一些有效的东西。
我最终使用了以下代码:
$agents=shell|u exec(“星号-rx'队列显示'| grep Agent | awk'{print$1\”\“$2}'| tr-d'('排序| uniq');
foreach(explode(PHP_EOL,$agents)作为$line)
{
if(预匹配(“/Agent/”,美元行)){
$agent=preg_split('/+/',$line);
echo“$agent[0]|”;
echo“$agent[1]
”;
}
}
$agents = shell_exec("asterisk -rx 'queue show' |grep Agent |awk '{print $1\" \"$2}' |tr -d '(' |sort |uniq");
foreach(explode(PHP_EOL, $agents) as $line)
{
if (preg_match("/Agent/", $line)) {
$agent = preg_split('/ +/', $line);
echo "$agent[0] | ";
echo "$agent[1] <br> ";
}
}