在php上对数组中的数据进行排序
我正在部署一个shipping服务到shopify,使用webhook将这些数据转换成json,我试图只发送表中的字段名称、数量、sku和id。 我使用foreach函数来实现它,但没有结果 格雷廷在php上对数组中的数据进行排序,php,shopify,Php,Shopify,我正在部署一个shipping服务到shopify,使用webhook将这些数据转换成json,我试图只发送表中的字段名称、数量、sku和id。 我使用foreach函数来实现它,但没有结果 格雷廷 [fulfillments] => Array ( [0] => stdClass Object ( [line_items] => Array (
[fulfillments] => Array
(
[0] => stdClass Object
(
[line_items] => Array
(
[0] => stdClass Object
(
[fulfillment_service] => manual
[fulfillment_status] => fulfilled
[gift_card] =>
[grams] => 2000
[id] => 470651995
[price] => 200.00
[product_id] => 304163215
[quantity] => 1
[requires_shipping] => 1
[sku] => 123456789
[taxable] =>
[title] => Product 1
[variant_id] => 709836495
[variant_title] =>
[vendor] => kkk
[name] => Product 1
)
[1] => stdClass Object
(
[fulfillment_service] => manual
[fulfillment_status] => fulfilled
[gift_card] =>
[grams] => 2000
[id] => 470651995
[price] => 200.00
[product_id] => 304163215
[quantity] => 3
[requires_shipping] => 1
[sku] => 123456789
[taxable] =>
[title] => Product 2
[variant_id] => 709836495
[variant_title] =>
[vendor] => kkk
[name] => Product 2
)
)
)
)
尝试以下
foreach()
,我假设您将所有初始数据存储在变量$fulfillments
$items = array();
foreach($fulfillments[0]->line_items as $item)
{
$items[] = array(
"name" => $item->name,
"quantity" => $item->quantity,
"sku" => $item->sku,
"id" => $item->id
);
}
echo json_encode($items);
$your\u array=json\u decode(json\u encode($your\u array),true);
//它将从StdClass强制转换为数组
$your_array=$your_array['fulfillments'];
$result_array=array();
$yaCnt=count($your_数组);
对于($i=0;$i<$yaCnt;++$i)
{
$items=$yaCnt[$i]['line_items'];
$iCnt=计数(项目);
对于($j=0;$j<$iCnt;++$j)
{
$result_array[]=数组(
'name'=>$items[$j]['name'],
“数量”=>$items[$j][“数量”],
'sku'=>$items[$j]['sku'],
'id'=>$items[$j]['id']
);
}
}
打印(结果数组);
您是如何使用foreach的?我认为它可能不止一个索引。另外,注意Std类对象,这是个好主意json_解码(json_编码($your_数组),true)
:)@rcro是的,如果你有一个混合了数组的对象,它会工作得很好。在从对象到数组的常规强制转换中,最好使用显式类型强制转换(数组)$var
@非常感谢,这正是我想要做的D
$your_array = json_decode(json_encode($your_array), true);
//it will casts from StdClass to an array
$your_array = $your_array['fulfillments'];
$result_array = array();
$yaCnt = count($your_array);
for($i = 0; $i < $yaCnt; ++$i)
{
$items = $yaCnt[$i]['line_items'];
$iCnt = count($items);
for($j = 0; $j < $iCnt; ++$j)
{
$result_array[] = array(
'name' => $items[$j]['name'],
'quantity' => $items[$j]['quantity'],
'sku' => $items[$j]['sku'],
'id' => $items[$j]['id']
);
}
}
print_r($result_array);
<?php
$yourData = array();
$shippingData =array();
foreach ($yourData as $fulfillments) {
foreach ($fulfillments->line_items as $line_items) {
$shippingData[] = array(
'name' => $line_items->name,
'quantity' => $line_items->quantity,
'sku' => $line_items->sku,
'id' => $line_items->id
);
}
}
echo json_encode($shippingData);