我试图根据切换情况下的响应将对象推入数组,但是对象返回最后推入其中的项目,而不是整个对象。每次用户回复BOT时都会设置一个Facebook Messenger BOT应用程序$user_ratings
。这是我的代码
$ratings=array();
$user_ratings=$msg['message']['quick_reply']['payload'];
switch($user_ratings)
{
case "servicerate":
$rates['Name']='Our Service';
$rates['Rating']=$msg['message']['text'];
array_push($ratings,$rates);
$facebook->sendAction($sender);
sleep(2);
$facebook->recommend($sender);
break;
case "recommend":
$rates['Name']='Recommend';
$rates['Rating']=$msg['message']['text'];
array_push($ratings,$rates);
$facebook->sendAction($sender);
sleep(2);
$facebook->storeRating($sender);
break;
case "storeRating":
$rates['Name']='Store Ratings';
$rates['Rating']=$msg['message']['text'];
array_push($ratings,$rates);
$facebook->sendAction($sender);
sleep(2);
$facebook->outletRating($sender);
break;
case "outletRating":
$rates['Name']='Outlet Ratings';
$rates['Rating']=$msg['message']['text'];
array_push($ratings,$rates);
$facebook->sendAction($sender);
sleep(2);
break;
}
但是,如果我执行print_r($ratings)
,则它仅返回最后一个对象“插座额定值”。请帮助看看代码。
谢谢
答案 0 :(得分:0)
您在这里没有循环,您只有开关用例,它根据该开关用例语句返回结果,因此如果结果为Outlet Ratings
这意味着$user_ratings=$msg['message']['quick_reply']['payload'];
的值为"outletRating"
,因此将执行以下代码:
$rates['Name']='Outlet Ratings';
$rates['Rating']=$msg['message']['text'];
array_push($ratings,$rates);
$facebook->sendAction($sender);
sleep(2);
将$rates
的值推入$ratings
数组中。
答案 1 :(得分:0)
如果整个代码是在循环或sthg中调用的,则始终创建一个名为$ ratings的新数组
$ratings=array();
如果循环中的最后一个'case'是'outletRating',则仅此案例的结果存储在$ ratings中。
如果您对此没有循环,则只会在您具有第一个迭代/大小写的情况下调用代码,因此只会填充第一个case的结果。
答案 2 :(得分:0)
因此,您尝试根据不同的用户输入将一些数据提取到一个空数组中。首先,您要尝试将rates数组(此代码中未定义,因此不完全了解)放入空的rating数组中。我注意到的是,您不能使用array_push()将一个数组推入另一个数组。您应该尝试像这样使用array_merge():
$a = array('a', 'b');
$b = array('c', 'd');
$merge = array_merge($a, $b);
// $merge is now equals to array('a','b','c','d');
您的情况应该是:
$rates['Name']='Our Service';
$rates['Rating']=$msg['message']['text'];
array_merge($ratings,$rates);
尝试一下,告诉会发生什么?您的问题解决了吗?
答案 3 :(得分:0)
为什么要使用array_push? 您应该使用:
$ratings[] = $rates;
此外,我在您的代码中注意到您没有重新初始化$ rates,因此请确保每次调用这段代码时都将其清空,这样您就不会面临覆盖问题,而这可能是您在这里遇到的问题。 / p>