我正在尝试从PhpMyAdmin(Mysql)获取JSON(PHP)。它实际上需要看起来像:
func getPicture() -> UIImage {
let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)!
var videoWidth = CVPixelBufferGetWidth(imageBuffer)
var videoHeight = CVPixelBufferGetHeight(imageBuffer)
CVPixelBufferLockBaseAddress(imageBuffer, CVPixelBufferLockFlags(rawValue: 0))
// Creating an image from a imageBuffer, a frame.
let baseAddress = CVPixelBufferGetBaseAddress(imageBuffer)
let bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer)
let colorSpace = CGColorSpaceCreateDeviceRGB()
var bitmapInfo = CGBitmapInfo.byteOrder32Little.rawValue
bitmapInfo |= CGImageAlphaInfo.premultipliedFirst.rawValue
let context = CGContext(data: baseAddress, width: videoWidth, height: videoHeight, bitsPerComponent: 8, bytesPerRow: bytesPerRow, space: colorSpace, bitmapInfo: bitmapInfo)!
let frameImage = context.makeImage()! // This is a CGImage
let image = UIImage(cgImage: frameImage)
return image
}
但是我实际上得到的是
[{ “converterno”: ”1”, “zoneno”: {“1a”, “codeid”:[“t1”,”t2”,”t3”]}, “zoneno”: {“1b”, “codeid”:[“t21”,”t0”,”t13”]}},{ “converterno”: ”2”, “zoneno”: {“2a”, “codeid”:[“t023”,”t9”,”t31”]}},………………………..
我不知道为什么我一开始就得到零值
PHP代码为:
[{"converternumber":"1","zonenumber":{"0":"","codeid":["er"]}},{"converternumber":"1","zonenumber":{"0":"wr","codeid":["fxv"]}},{"converternumber":"2","zonenumber":{"0":"b2","codeid":["gffff"]}}]
任何人都可以告诉我“ While”循环中哪里出了问题。
浏览了 StackOverFlow 中与JSON相关的所有代码,但没有发现更接近或相似的内容。尝试了几乎所有内容并立即发布! 希望我能在这里得到任何帮助!
数据库中的表为: Table addcode
答案 0 :(得分:0)
zonenumber
的数组也覆盖了codeid
元素...
"zonenumber":{"0":"","codeid":["er"]}
您需要在同一行上关闭zonenumber
的数组,而要在codeid
元素之后关闭它...
'zonenumber' => array($row['zonenumber']),
'codeid' => array($row['codeid'])
您还只会获取第一个数据,因为只有在尚未设置数据的情况下才添加数据...
if(!isset($info[$row['converternumber']])){
由于要按2个元素进行分组,因此不能仅按converternumber
索引数组,因为它不是唯一的。我将其更改为搜索数组并在converternumber
和zonenumber
相同时添加它。.
$info = [];
while ($row = mysqli_fetch_array($result)){
$exists = false;
foreach ( $info as &$existing ) {
if ( $existing['converternumber'] == $row['converternumber']
&& $existing['zonenumber'][0] == $row['zonenumber'] ) {
$exists = true;
$existing['codeid'][] = $row['codeid'];
break;
}
}
if(!$exists){
$info[] = array(
'converternumber'=> $row['converternumber'],
'zonenumber' => [$row['zonenumber']],
'codeid' => [$row['codeid']]
);
}
}
echo json_encode(array_values($info));
答案 1 :(得分:0)
经过深入讨论,您似乎希望拥有一个“祖父母/父母/子女”结构。这是非常容易形成的,并且完全关联的结构将使您的数据非常紧凑且易于迭代。
*,您应该使用python
而不是膨胀的pandas
,因为您不打算使用它生成的索引元素。
代码(Demo based on your database screenshot)
mysqli_fetch_assoc()
3级数组如下所示:
mysqli_fetch_array()