-2

連想配列内に連想配列を作成しました。しかし、要素の支払いを増やしたいときに問題が発生しました。PHPコードは次のとおりです。

$assoc_in_assoc['Manager']['name'] ="Jim";
$assoc_in_assoc['Manager']['pay'] = 7000;
$assoc_in_assoc['Manager']['Location'] ="2nd Flooe";
$assoc_in_assoc['Accountant']['name'] ="Mr Mike";
$assoc_in_assoc['Accountant']['pay'] = 4000;
$assoc_in_assoc['Accountant']['Location'] ="Account Office";
$assoc_in_assoc['Accountant']['Special Skills'] ="Charterd Accountant";

// Lets give each one a raise of 1000 dollars
foreach ($assoc_in_assoc as $rec){
echo "<pre>";
$rec['pay'] = $rec['pay']+ 1000;
echo print_r($rec);
echo "</pre>";
}// end for each
echo "<pre>"; echo "<hr/>";
echo print_r($assoc_in_assoc);
echo "</pre>";
?> </body> </html>

配列構造を変換せずに支払いを増やす方法を誰かが提案できますか?

配列の構造を連想配列から連想配列に変更することで問題を解決しました...インデックス付き配列内の連想配列に変更しました。

解決:

<html> <head> </head> <body> <?php 
echo "Associative array with in Associative array";

$assoc_in_assoc['0']['appointment'] ="Manager";
$assoc_in_assoc['0']['name'] ="Jim";
$assoc_in_assoc['0']['pay'] = 7000;
$assoc_in_assoc['0']['Location'] ="2nd Flooe";
$assoc_in_assoc['1']['appointment'] ="Accountant";
$assoc_in_assoc['1']['name'] ="Mr Mike";
$assoc_in_assoc['1']['pay'] = 4000;
$assoc_in_assoc['1']['Location'] ="Account Office";
$assoc_in_assoc['1']['Special Skills'] ="Charterd Accountant";

// Lets give each one a raise of 1000 dollars
$count=0;
foreach ($assoc_in_assoc as $rec){
echo "<pre>";
$assoc_in_assoc[$count]['pay'] += 1000;
$count++;
echo "</pre>";
}// end for each
echo "<pre>"; echo "<hr/>";
echo print_r($assoc_in_assoc);
echo "</pre>";
?> </body> </html>

PHP配列の議論の徹底的な情報源に私を導いてくれる人はいますか?はじめにだけでなく、アレイのすべての側面の詳細な説明。

4

2 に答える 2

3

以前と同じ構造を維持するために何か他のことをすることができます。単純なforeachを実行する代わりに、次のことを実行できます。

foreach($assoc_in_assoc as $key => $rec){
    $assoc_in_assoc[$key]['pay'] += 1000;
}
于 2012-08-18T16:24:07.410 に答える
2

PHPのホームページで配列を読むことをお勧めします。 http://php.net/manual/en/language.types.array.php

2つのオプションがあります。

まず、foreach2つの引数があります!もう1つの引数は、通常の配列の整数インデックスである配列のキーと、連想配列のキーです。$count2番目の例で追跡する代わりに、もう1つを使用できます。

foreach ($assoc_in_assoc as $key => $rec){
  echo "<pre>";

  $assoc_in_assoc[$key]['pay'] = $rec['pay'] + 1000;

  echo print_r($rec);    
  echo "</pre>";
}// end for each

次に、foreach参照によってループを作成し、実行していたことを実行できます。

foreach ($assoc_in_assoc as &$rec){
  echo "<pre>";

  $rec['pay'] = $rec['pay'] + 1000;

  echo print_r($rec);    
  echo "</pre>";
}// end for each
于 2012-08-18T16:23:59.547 に答える