0 レビュー
2 回答
PHPは未知の変数でJSON配列を読み取ります
内部に配列があり、このように短縮された配列を持つJsonスクリプトがあります:
Array
(
[assets] => Array
(
[CGGD.AS] => Array
(
[shortName] => iShares Global Govt Bond Climat
[sector] =>
[industry] =>
[country] =>
[longBusinessSummary] =>
[currency] => USD
[marketCap] =>
[logo_url] =>
[Anlageklasse] => Anleihen
[Anmerkungen] => Staatsanleihen Welt
[Nachhaltigkeit] => 1
[Ist_Alternative] => 1
[weights] => 0.86563025602977
)
[SUOE.MI] => Array
(
[shortName] => ISHARES EUR CORP BOND SRI UCITS
[sector] =>
[industry] =>
[country] =>
[longBusinessSummary] =>
[currency] => EUR
[marketCap] =>
[logo_url] =>
[Anlageklasse] => Anleihen
[Anmerkungen] => Unternehmensnaleihen EUR
[Nachhaltigkeit] => 1
[Ist_Alternative] => 1
[weights] => -0.47997445382071
)
)
[risk] => 0.05323390949106
[return] => 1.1125842376311
)
ここで、shortName、industryなどの単一変数を使用したいと思います。
で関数を呼び出そうとしたとき
print_r($json_data['assets']['CGGD.AS']['shortName']);
それは完全にうまくいきました。使用する場合
print_r($_POST['assets'][0][0]);
まったく機能しておらず、次の警告が表示されます:
警告:未定義の配列キー「アセット」
C:\ xampp \ htdocs \ test \ ergebnisdarstellung.php、52行目
警告:null型の値の配列オフセットにアクセスしようとしています
C:\ xampp \ htdocs \ test \ ergebnisdarstellung.php、52行目
私が抱えている問題は、CGGD.ASのように2番目の括弧内の名前がわからないため、作業関数を使用できないことです。配列の長さも数字も機能していません。このため、名前を使用せずに単一変数を呼び出す方法がわかりません。
関数を呼び出すにはどうすればよいですか?
わからない
0
レビュー
答え :
解決策:
すべての 最初の要素のshortNameを取得するには、配列をループします:
foreach($ json_data ['assets'] as $ key => $ data){
print_r($ data ['shortName']);
}
shortNameだけが必要な場合は、
current :
$ item = current($ json_data ['assets']);
print_r($ item ['shortName']);
わからない
0
レビュー
答え :
解決策: $arr = [
'assets' => [
'CGGD.AS' => [
'shortName' => 'iShares Global Govt Bond Climat',
// other fields omitted
],
'SUOE.MI' => [
'shortName' => 'ISHARES EUR CORP BOND SRI UCITS',
// other fields omitted
]
],
'risk' => 0.05323390949106,
'return' => 1.1125842376311
];
$assetsKeys = array_keys($arr['assets']);
$shortNames = array_column($arr['assets'], 'shortName');
$result = array_combine($assetsKeys, $shortNames);
print_r($result);
// This will print:
// Array
// (
// [CGGD.AS] => iShares Global Govt Bond Climat
// [SUOE.MI] => ISHARES EUR CORP BOND SRI UCITS
// )
$arr = [
'assets' => [
'CGGD.AS' => [
'shortName' => 'iShares Global Govt Bond Climat',
// other fields omitted
],
'SUOE.MI' => [
'shortName' => 'ISHARES EUR CORP BOND SRI UCITS',
// other fields omitted
]
],
'risk' => 0.05323390949106,
'return' => 1.1125842376311
];
$assetsKeys = array_keys($arr['assets']);
$shortNames = array_column($arr['assets'], 'shortName');
$result = array_combine($assetsKeys, $shortNames);
print_r($result);
// This will print:
// Array
// (
// [CGGD.AS] => iShares Global Govt Bond Climat
// [SUOE.MI] => ISHARES EUR CORP BOND SRI UCITS
// )
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。