從mysql中,我有一個數據BLOB數據類型,它有兩種不同的方案(請參見下文)。我試圖把它們放入一個字符串中。下面是我在做的過程:不同數據長度的php JSON_DECODE
1.查詢:
$names= $results[0]->name;
print_r($names);
第一種方案:
[{"Name":"Mike"},{"Name":"Sean"}]
第二種情況:
{"Name":"Mike Smith","Spaces":"1"}
2. JSON_DECODE
$data = json_decode(stripslashes($names),true);
print_r($data);
第一種方案:
Array
(
[0] => Array
(
[Name] => Mike
)
[1] => Array
(
[Name] => Smith
)
)
第二種情況:
Array
(
[Name] => Mike Smith
[Spaces] => 1
)
3.我所試圖做的:將它們放到一個字符串
$string = '';
for ($i=0; $i <sizeof($data) ; $i++){
$row = $data[$i];
$name = $row -> Name;
if(isset($row -> Spaces)){
$number = '(' . $row -> Spaces . ')';
}else{
$number = '';
};
$string .= $name . $number . ', ';
};
//Remove last comma
$refined = rtrim($string,', ');
print_r($refined);
4. ISSUE
我遇到的問題是,因爲數據可能有兩個不同的情況,如「1.Query」中所示,我無法預測或概括它,並得到像「試圖獲得非對象的財產「。
我該如何解決這個問題?
你引用的數組,如果它是一個對象。使用'$'['Spaces']'和'$ row ['Name']' – RiggsFolly
使用'isset('Spaces')'來預測它們是**第二種情況** –
或者從''json_decode()'並將數據保留爲對象 – RiggsFolly