从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