Php 如何将多维数组转换为单个变量?
问题是我无法获取数组值并分配给某个变量。我想向多个号码发送消息,这些号码来自Php 如何将多维数组转换为单个变量?,php,Php,问题是我无法获取数组值并分配给某个变量。我想向多个号码发送消息,这些号码来自DB。这是我的数组,用来保存所有的mob号码。现在的问题是我想从这个数组中发送所有的数字 Array ( [0] => Array ( [mobile] => 9944176261 ) [1] => Array ( [mobile] => 9994444783 )
DB
。这是我的数组,用来保存所有的mob号码。现在的问题是我想从这个数组中发送所有的数字
Array
(
[0] => Array
(
[mobile] => 9944176261
)
[1] => Array
(
[mobile] => 9994444783
)
[2] => Array
(
[mobile] => 9944176261
)
)
,Array
(
[0] => Array
(
[mob_no] => 9944176262
)
[1] => Array
(
[mob_no] => 9944176263
)
[2] => Array
(
[mob_no] => 9944176265
)
)
这是我使用SMS网关发送消息的代码。我想将所有号码分配给receipientno
变量。基于此receipientno
值发送消息
//msg code for customers
$ch = curl_init();
$user="username:pwd";
$receipientno=$_POST['check_list'];
$receipientno = implode(',', $receipientno);
$senderID="TEST SMS";
$msgtxt=$_POST['message'];
curl_setopt($ch,CURLOPT_URL, "http://api.mVaayoo.com/mvaayooapi/MessageCompose");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "user=$user&senderID=$senderID&receipientno=$receipientno&msgtxt=$msgtxt");
$buffer = curl_exec($ch);
if(empty ($buffer))
{ echo " buffer is empty "; }
else
{ echo $buffer; }
curl_close($ch);
假设您的POST数组的结构如下:
$arr = array(
array(
0 => array
(
'mobile' => 9944176261
),
1 => array
(
'mobile' => 9994444783
),
2 => array
(
'mobile' => 9944176261
)
),
array
(
0 => array
(
'mob_no' => 9944176262
),
1 => array
(
'mob_no' => 9944176263
),
2 => array
(
'mob_no' => 9944176265
)
)
)
;
您可以使用此代码段获得所有mob\u no
和mobile
索引的逗号分隔列表
$receipientsNo = "";
foreach($arr as $row){
$recipientsNo .= ",". implode(',', array_map(function ($input) {
if(isset($input['mobile']))
return $input['mobile'];
elseif (isset($input['mob_no']))
return $input['mob_no'];
}, $row));
}
$recipientsNo = ltrim($recipientsNo,",");
更新:
您需要为客户更新//msg代码
代码如下:
$ch = curl_init();
$user="username:pwd";
$receipientsNo = "";
foreach($_POST['check_list'] as $row){
$receipientsNo .= ",". implode(',', array_map(function ($input) {
if(isset($input['mobile']))
return $input['mobile'];
elseif (isset($input['mob_no']))
return $input['mob_no'];
}, $row));
}
$receipientsNo = ltrim($receipientsNo,",");
$senderID="TEST SMS";
$msgtxt=$_POST['message'];
curl_setopt($ch,CURLOPT_URL, "http://api.mVaayoo.com/mvaayooapi/MessageCompose");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "user=$user&senderID=$senderID&receipientno=$receipientsNo&msgtxt=$msgtxt");
$buffer = curl_exec($ch);
if(empty ($buffer))
{ echo " buffer is empty "; }
else
{ echo $buffer; }
curl_close($ch);
试试这个
<?php
$receipientno='';
$ss = array(
array(
0 => array
(
'mobile' => 9944176261
),
1 => array
(
'mobile' => 9994444783
),
2 => array
(
'mobile' => 9944176261
)
),
array
(
0 => array
(
'mob_no' => 9944176262
),
1 => array
(
'mob_no' => 9944176263
),
2 => array
(
'mob_no' => 9944176265
)
)
)
;
foreach($ss as $row ) {
if(isset($row[0]['mobile']))
{
$receipientno.= implode(',',array_column($row,'mobile'));
}
else if(isset($row[0]['mob_no']))
{
$receipientno.= implode(',',array_column($row,'mob_no'));
}
}
echo $receipientno;
输出:
foreach($ss as $row ) {
foreach($row as $new ){
if(isset($new['mobile']))
$receipientno.=$new['mobile'].",";
else if(isset($new['mob_no']))
$receipientno.=$new['mob_no'].",";
}
}
echo rtrim($receipientno,",");
9944176261,9994444783,99441762619944176262,9944176263,9944176265
因此,您希望从数组中取出所有手机号码,并将其放入一个公共分隔字符串中?foreach($array as$row){$receipientno.=explode(',',array_column('mobile',$array));}您是对的@MarkTwigg@JYoThI不工作
为foreach()提供的参数无效
error请尝试我发布的答案@T.KarthikeyanT.karthikeyan但我为什么要更改数组的结构?我不建议您更改数组结构。我的示例使用的数组与您在问题中提供的数组相同。这就是问题所在我想从数组中取出所有手机号码,并将它们放入一个公共分隔变量中它显示了什么错误?因为我刚刚测试了它,它工作了。注意:数组到字符串的转换
linecurl\u setopt($ch,CURLOPT\u POSTFIELDS,“user=$user&senderID=$senderID&receipentno=$receipentno&msgtxt=$msgtxt”)
我想你在某个地方犯了错误,我测试了代码,代码正常@T.KarthikeyanT.karthikeyanc你能复制我的源代码并在这里测试吗@T.KarthikeyanT.Karthikeyani刚刚复制并运行了array\u column
函数,黑色哦,好的,你的php版本是什么?是的,需要5.5以上的东西,我不确定。好的,我会尝试另一个方法