gpt4 book ai didi

php - 在 PHP 中访问 stdClass 中第一个属性的属性名称

转载 作者:行者123 更新时间:2023-12-05 08:54:36 25 4
gpt4 key购买 nike

在对 json 字符串执行 json_decode 后,我有一个包含许多 stdClasses 的数组。

看起来像这样:

product: array(3)
0: stdClass
PropertyAbc: "Product 1|Product 5"
1: stdClass
PropertyXyz: "Product 2|Product 9|Product 10"
2: stdClass
PropertyEfg: "Product 3|Product 12"

我需要将其转换为以下格式的所有值的竖线分隔字符串:PropertyName>Value 作为我的最终结果:

PropertyAbc>Product 1|PropertyAbc>Product 5|PropertyXyz>Product 2|PropertyXyz>Product 9|PropertyXyz>Product 10|PropertyEfg>Product 3|PropertyEfg>Product 12

这是我尝试这样做的方法,但无法弄清楚在遍历 stdClasses 时如何获取第一个属性的值和名称(注意:每个 stdClass 始终只有一个属性):

foreach ($json->products as $product) {
// Put all products in an array
$arr = explode('|', $NEED-VALUE-OF-FIRST-PROP);

// Loop through array and combine values
foreach ($arr as $key => $value) {
$arr[$key] = $NEED-NAME-OF-FIRST-PROP . ">" . $value;
}
}

最佳答案

get_object_vars对于获取对象属性作为数组并从那里开始工作很有用。

 $p1 = new StdClass();
$p1->PropertyAbc = "Product 1|Product 5";

$p2 = new StdClass();
$p2->PropertyXyz = "Product 2|Product 9|Product 10";

$p3 = new StdClass();
$p3->PropertyEfg = "Product 3|Product 12";

$products = [ $p1, $p2, $p3 ];
foreach ($products as $product) {
$productArray = get_object_vars($product);
$productPropName = array_keys($productArray)[0];
$productPropsValues = explode('|', array_values($productArray)[0]);
foreach ($productPropsValues as $productPropsValue) {
$result[] = $productPropName . '>' . $productPropsValue;
}
}

var_dump(implode('|', $result));

string(155) "PropertyAbc>产品 1|PropertyAbc>产品 5|PropertyXyz>产品 2|PropertyXyz>产品 9|PropertyXyz>产品 10|PropertyEfg>产品 3|PropertyEfg>产品 12"

关于php - 在 PHP 中访问 stdClass 中第一个属性的属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49238870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com