我在我的問題的底部有一個主PHP數組。它的工作原理與編碼完全一致。我的問題侷限於數組中顯示的「內容」對象。對多維數組內存在子數組的條件變化
'content'對象應該包含最多10個子數組($ newSubArray0-9),每個子數組根據下面的這個簡單循環填充圖像數據(數據全部可從先前的數據庫查詢中獲得 - 所以沒有問題)。現在
//get data for the 'content' object sub arrays....
for($i = 0; $i<9; $i++) {
$newSubArray.$i =
[
'url' => $uploadspath.$media_url.$i,//main image
"type" =>$type.$i,//media type
"caption"=>$caption.$i
];
}
...主陣列在下面我只是需要能夠排除或刪除任何$ newSubArray的(0-9)情況下,如果相應的媒體條件下產生的空介質的結果,即( !media_url。$ i)或($ media_url。$ i =「」)。
我已經試過......
If (media-conditon)
...{$newSubArray.$i=UNSET($newSubArray.$i);}
...{$newSubArray.$i=array_filter($newSubArray.$i);}
...{$newSubArray.$i=array_values($newSubArray.$i);}
所有這些努力的影響,我想完全刪除子數組元素(基於條件),但留下的子陣列本身如「無」的痕跡。該跟蹤會導致後續數據驗證失敗。虛擬化正在通過json數據發送到的第三方API完成 - 所以我無法更改驗證。我需要在那裏沒有任何關聯$ media_url值的子數組沒有記錄。
以下是主陣列的一部分,其中包含需要有條件地包含或排除的子陣列元素,具體取決於關聯圖像的可用性。這一切工作正常...只需要解決上述問題。
$data = json_encode
(
array
(
"location" =>array
(
"property_number_or_name" => $house_name_number,
"street_name" => $propaddress1,
"locality" => $propaddress2,
"town_or_city" => $town,
"postal_code" => $postcode,
"country_code" => "GB",
"coordinates"=>array
(
"latitude"=>(float)$latitude,
"longitude"=>(float)$longitude
)
),
"pricing" =>array
(
"rent_frequency" => $rent_frequency,
"currency_code" => "GBP",
"price" => (int)$price,
"transaction_type" => "rent"
),
"detailed_description" =>array
(
array
(
"text" => $description
)
),
"content" => array
(
$newSubArray0,//remove this sub array completely if no media_url0
$newSubArray1,//remove this sub array completely if no media_url1
$newSubArray2,//remove this sub array completely if no media_url2
$newSubArray3,//remove this sub array completely if no media_url3
$newSubArray4,//remove this sub array completely if no media_url4
$newSubArray5,//remove this sub array completely if no media_url5
$newSubArray6,//remove this sub array completely if no media_url6
$newSubArray7,//remove this sub array completely if no media_url7
$newSubArray8,//remove this sub array completely if no media_url8
$newSubArray9 //remove this sub array completely if no media_url9
),
"google_street_view"=>array
(
"heading"=>(float)$pov_heading,
"pitch"=> (float)$pov_pitch,
"coordinates"=> array
(
"latitude"=>(float)$pov_latitude,
"longitude"=>(float)$pov_longitude
)
),
"display_address"=> $display_address,
"summary_description"=> $summary
,JSON_UNESCAPED_SLASHES);
嗨凱文。這次真是萬分感謝。我很困惑爲什麼unset不起作用。請你給我一點解釋你的新建議。 [很高興首先設置內容數組]。只是儘量保持這個儘可能簡單,因爲有這個代碼的一大堆實例。 – user2755309
如果有大量代碼實例,則應該考慮將其抽象化。爲了幫助進一步瞭解爲什麼unset不適合你,我們需要更多的真實代碼,而不是像你的問題那樣使用僞代碼。 –
所以我只是在測試腳本之前,整個陣列如下.. – user2755309