我 get() 多维数组并将其存储在 $ products 变量中。
我需要制作该数组的副本以将其创建到新的Webshop中,因为API提供的导出不起作用所以我创建了此脚本来复制数据:
foreach ($products as $id => $product) {
$copy = $products[$id];
$createdProducts = $apiSkylux->products->create(
array(
'id' => $copy['id'],
'createdAt' => $copy['createdAt'],
'updatedAt' => $copy['updatedAt'],
'isVisible' => $copy['isVisible'],
'visibility' => $copy['visibility'],
'data01' => $copy['data01'],
'data02' => $copy['data02'],
'data03' => $copy['data03'],
'url' => $copy['url'],
'title' => $copy['title'],
'fulltitle' => $copy['fulltitle'],
'description' => $copy['description'],
'content' => $copy['content'],
'set' => $copy['set'],
'brand' => $copy['brand'],
'categories' => $copy['categories'],
'deliverydate' => $copy['deliverydate'],
'image' => $copy['image'],
'images' => $copy['images'],
'relations' => $copy['relations'],
'reviews' => $copy['reviews'],
'type' => $copy['type'],
'attributes' => $copy['attributes'],
'supplier' => $copy['supplier'],
'tags' => $copy['tags'],
'variants' => $copy['variants'],
'movements' => $copy['movements'],
)
);
}
副本正常运行。但我认为 @ 2016 并且所有这些都不能用更少的代码行来实现吗?
这是我通过第一个数组var_dump
收到的内容:
var_dump($products[0]);
exit;
//result
array(28) {
["id"]=>
int(26136946)
//rest of array
所以我可以看到数组有一个数字(28),这代表什么?
我尝试了几次尝试,最接近的尝试是:
$copy = $products[$id];
$createProducts = $products;
$createdProducts = $apiSkylux->products->create($createProducts);
但后来我也得到了error : Invalid data input
我可以比我目前使用的方法更容易地从数组中复制数据吗?
答案 0 :(得分:2)
array( 'id' => $copy['id'], ... )
这可以简化为:
$copy
是的,将每个键重新分配到一个新数组与首先使用原始数组相同。
foreach($products as $id => $product){ $copy = $products[$id];
这可以简化为:
foreach ($products as $product){
$copy = $product;
显然,您可以完全忽略$copy
并使用$product
。
底线:
foreach ($products as $product) {
$createdProducts = $apiSkylux->products->create($product);
}
你对$createdProducts
做什么我不知道;你似乎没有在循环中做任何事情,所以最好它会在循环后保留最后一个产品,所以可能是多余的。
可能你可以这样做:
array_map([$apiSkylux->products, 'create'], $products);
或
$createdProducts = array_map([$apiSkylux->products, 'create'], $products);
取决于您是否需要返回值。
所以我可以看到数组有一个数字(28),这代表什么?
这意味着它是一个包含28个元素的数组。
答案 1 :(得分:1)
这没有任何意义。只需在循环中使用$product
变量即可。完成!