im试图让facebook上传与随机标签好友的照片。程序运行正确,但我在阵列上得到了堆栈
$args = array(
'message' => 'Test Tags Text',
"access_token" => $access_token,
"image" => $files,
'tags' => $id,
);
$id是数组好友列表,此处为格式
$friends = $facebook->api('/me/friends');
$frand = array_rand( $friends['data'], 20 );
foreach($frand as $fid){
$id[$fid]['tag_uid'] = $friends['data'][$fid]['id'];
$id[$fid]['x'] = 0;
$id[$fid]['y'] = 0;
}
更新2:
请阅读数组:PHP手动数组。数组中的每个元素都有一个键,即使您没有指定它。数组中不能有没有键的元素。
定义数组(不必指定键)和打印阵列(提供数组的文本表示)之间存在差异。
更新:所以看起来必须是
$args['tags'] = $id;
$id
已经是一个数组。若将其传递给array
,它将创建一个以$id
为第一个元素的新数组。
旧答案:
您已经在谈论合并。您看过array_merge
[docs]吗?
$args['tags'] = array_merge($args['tags'], $id);
当然,$args['tags'] = array( $id );
不起作用。它
- 覆盖
$args['tags']
的现有值 - 正如您已经注意到的,它将已经是一个数组的
$id
添加到一个数组中。如果$args['tags']
没有值,可以只执行$args['tags'] = $id;
我建议使用compact($example1、$example2、$example3),但结果将与您可能习惯的数组合并不同:
$example1 = array (x,y,z);
$example2 = array (a,b,c);
$example3 = array (d,e,f);
$mergedValue = compact('example1','example2','example3');
var_dump ($mergedValue);
// output will be:
array(3) { ["example1"]=> array(3) { [0]=> string(1) "x" [1]=> string(1) "y" [2]=> string(1) "z" } ["example2"]=> array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" } ["example3"]=> array(3) { [0]=> string(1) "d" [1]=> string(1) "e" [2]=> string(1) "f" } }
包含compact的php手册链接为:
http://php.net/manual/en/function.compact.php