PHP 数组不压入元素
PHP array not pushing elements
我有以下代码:
$mh = curl_multi_init();
$requests = array();
addSentimentHandle ( 'Hello', $requests );
addSentimentHandle ( 'Hello :)', $requests );
function addSentimentHandle($tweet, $requests) {
$url = makeURLForAPICall($tweet);
array_push($requests, curl_init ($url));
print_r($requests);
}
我希望 $requests
数组包含两个元素,但这是输出:
Array ( [0] => Resource id #8 ) Array ( [0] => Resource id #9 )
为什么要创建 2 个数组而不是将第二个项目推入同一个数组?
我认为您的问题是您想将 $requests 用作全局变量。
在您的代码中不是。
您应该将其作为参考传递:
$mh = curl_multi_init();
$requests = array();
addSentimentHandle ( 'Hello', $requests );
addSentimentHandle ( 'Hello :)', $requests );
function addSentimentHandle($tweet, &$requests) {
$url = makeURLForAPICall($tweet);
array_push($requests, curl_init ($url));
print_r($requests);
}
请注意函数声明中 $requests 的前缀“&”。然后 php 不会在这个函数中将它用作局部变量。
我建议您使用 php 作为面向对象的语言。
class myAwesomeTweeterClass{
protected $_requests;
public function __construct(){
$this->_requests = array();
}
public function addSentimentHandle($tweet) {
$url = makeURLForAPICall($tweet);
array_push($this->_requests, curl_init ($url));
}
public function getRequests(){
return $this->_requests;
}
}
$mh = curl_multi_init();
$obj = new myAwesomeTweeterClass();
$obj->addSentimentHandle ( 'Hello');
$obj->addSentimentHandle ( 'Hello :)');
print_r($obj->getRequests());
我有以下代码:
$mh = curl_multi_init();
$requests = array();
addSentimentHandle ( 'Hello', $requests );
addSentimentHandle ( 'Hello :)', $requests );
function addSentimentHandle($tweet, $requests) {
$url = makeURLForAPICall($tweet);
array_push($requests, curl_init ($url));
print_r($requests);
}
我希望 $requests
数组包含两个元素,但这是输出:
Array ( [0] => Resource id #8 ) Array ( [0] => Resource id #9 )
为什么要创建 2 个数组而不是将第二个项目推入同一个数组?
我认为您的问题是您想将 $requests 用作全局变量。 在您的代码中不是。 您应该将其作为参考传递:
$mh = curl_multi_init();
$requests = array();
addSentimentHandle ( 'Hello', $requests );
addSentimentHandle ( 'Hello :)', $requests );
function addSentimentHandle($tweet, &$requests) {
$url = makeURLForAPICall($tweet);
array_push($requests, curl_init ($url));
print_r($requests);
}
请注意函数声明中 $requests 的前缀“&”。然后 php 不会在这个函数中将它用作局部变量。
我建议您使用 php 作为面向对象的语言。
class myAwesomeTweeterClass{
protected $_requests;
public function __construct(){
$this->_requests = array();
}
public function addSentimentHandle($tweet) {
$url = makeURLForAPICall($tweet);
array_push($this->_requests, curl_init ($url));
}
public function getRequests(){
return $this->_requests;
}
}
$mh = curl_multi_init();
$obj = new myAwesomeTweeterClass();
$obj->addSentimentHandle ( 'Hello');
$obj->addSentimentHandle ( 'Hello :)');
print_r($obj->getRequests());