如何从单个数组变量合并多个数组?假设我在一个数组变量
中有这个 这些是一个变量..
$array = array(array(1), array(2));
Array
(
[0] => 1
)
Array
(
[0] => 2
)
如何结束这个
Array
(
[0] => 1
[1] => 2
)
答案 0 :(得分:15)
这是javascript Function#apply
的PHP等价物(从数组生成参数列表):
$result = call_user_func_array("array_merge", $input);
答案 1 :(得分:4)
这可能有效:
<div id="container"></div>
<script type="text/javascript">
function sleep(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}
}
}
window.onload = function() {
// set up stage,layer and quadratic-curve
var stage = new Kinetic.Stage({
container: 'container',
width: 350,
height: 350
});
var layer = new Kinetic.Layer();
stage.add(layer);
// vars related to the images
var bone, dog;
var boneScale = 1;
var boneOffset = {
x: -11,
y: 0
};
var dogScale = 0.50;
// vars related to the quadratic curve
var qStart = {
x: 115,
y: 85
};
var qControl = {
x: 155,
y: 108
};
var qEnd = {
x: 200,
y: 88
};
var startXY = getQuadraticBezierXYatT(qStart, qControl, qEnd, 0, 00);
var pathData = "M " + qStart.x + " " + qStart.y;
pathData += " Q " + qControl.x + " " + qControl.y;
pathData += " " + qEnd.x + " " + qEnd.y;
// vars related to calculating points on the curve
var T = 0;
var TDirection = 1;
// set up quadratic-curve
var path = new Kinetic.Path({
x: 0,
y: 0,
data: pathData,
stroke: 'green',
strokeWidth: 3,
});
layer.add(path);
layer.draw();
// load 2 images
var loaded = 0;
var boneImg = new Image();
boneImg.onload = function () {
loaded++;
if (loaded == 2) {
start();
}
}
boneImg.src = "<%=asset_path 'flight.png'%>";
var dogImg = new Image();
dogImg.onload = function () {
loaded++;
if (loaded == 2) {
start();
}
}
dogImg.src = "<%=asset_path 'your-logo.png'%>";
var circle0 = new Kinetic.Circle({
x: 100,
y: 56,
id: 'circle0',
radius: 9,
fill: 'yellow',
stroke: 'white',
strokeWidth: 0
});
layer.add(circle0);
// create Kinetic.Images
function start() {
var pos = getQuadraticBezierXYatT(qStart, qControl, qEnd, 0.00);
bone = new Kinetic.Image({
x: pos.x + boneOffset.x,
y: pos.y + boneOffset.y,
id: 'bone',
image: boneImg,
width: boneImg.width * boneScale,
height: boneImg.height * boneScale,
});
layer.add(bone);
dog = new Kinetic.Image({
x: 30,
y: 15,
image: dogImg,
width: 300,
height: 90
});
layer.add(dog);
layer.draw();
animation.start();
}
var imageObj = new Image({id: 'bone'});
imageObj.src = "<%=asset_path 'mirror_flight.png'%>";
var flight = new Image({id: 'flight'});
flight.src = "<%=asset_path 'flight.png'%>";
// create animation along quadratic curve
var animation = new Kinetic.Animation(function (frame) {
var pos = getQuadraticBezierXYatT(qStart, qControl, qEnd, T / 150);
pos.x += boneOffset.x;
pos.y += boneOffset.y;
bone.setPosition(pos);
T += TDirection;
if (T < 0 || T > 150) {
TDirection *= -1;
T += TDirection
if (T==150) {
layer.get('#circle0')[0].remove();
layer.get('#bone')[0].setImage(imageObj);
var circle = new Kinetic.Circle({
x: 221,
y: 56,
id: 'circle',
radius: 9,
fill: 'yellow',
stroke: 'white',
strokeWidth: 0
});
// add the shape to the layer
layer.add(circle);
sleep(1000);
// layer.get('#circle')[0].remove();
} else if(T==0){
layer.get('#circle')[0].remove();
var circle0 = new Kinetic.Circle({
x: 100,
y: 56,
id: 'circle0',
radius: 9,
fill: 'yellow',
stroke: 'black',
strokeWidth: 0
});
layer.add(circle0);
layer.get('#bone')[0].setImage(flight);
sleep(1000);
};
}
}, layer);
// Calc an XY along a quadratic curve at interval T
// T==0.00 at start of curve, T==1.00 at end of curve
function getQuadraticBezierXYatT(startPt, controlPt, endPt, T) {
var x = Math.pow(1 - T, 2) * startPt.x + 2 * (1 - T) * T * controlPt.x + Math.pow(T, 2) * endPt.x;
var y = Math.pow(1 - T, 2) * startPt.y + 2 * (1 - T) * T * controlPt.y + Math.pow(T, 2) * endPt.y;
return ({
x: x,
y: y
});
}
}
</script>
答案 2 :(得分:3)
array_merge可以完成这项工作
$array_meged = array_merge($a, $b);
评论后
如果您使用固定索引:
$array_meged = array_merge($a[0], $a[1]);
更通用的解决方案:
$array_meged=array();
foreach($a as $child){
$array_meged += $child;
}
答案 3 :(得分:1)
$resultArray = array_merge ($array1, $array1);
$result = array();
foreach ($array1 as $subarray) {
$result = array_merge($result, $subarray);
}
// Here it is done
好看的东西: http://ca2.php.net/manual/en/function.array-merge.php
递归:
http://ca2.php.net/manual/en/function.array-merge-recursive.php
答案 4 :(得分:1)
$arr1 = array(0=>1);
$arr2 = array(0=>2);
$merged = array_merge($arr1,$arr2);
print_r($merged);
答案 5 :(得分:1)
答案 6 :(得分:0)