文字列/整数キーを保持しながら、2つの配列(1つは文字列=>値のペア、もう1つはint =>値のペア)をマージするにはどうすればよいですか?それらのいずれも重複することはありません(一方が文字列のみを持ち、もう一方が整数しか持たないため)。
これが私の現在のコードです(array_mergeが整数キーで配列のインデックスを再作成しているため、機能しません):
// get all id vars by combining the static and dynamic
$staticIdentifications = array(
Users::userID => "USERID",
Users::username => "USERNAME"
);
// get the dynamic vars, formatted: varID => varName
$companyVarIdentifications = CompanyVars::getIdentificationVarsFriendly($_SESSION['companyID']);
// merge the static and dynamic vars (*** BUT KEEP THE INT INDICES ***)
$idVars = array_merge($staticIdentifications, $companyVarIdentifications);
1
これは奇妙です。PHPのドキュメントページによると、array_merge はそれを行うべきではありません。文字列キーは実際には整数の文字列表現ですか?
—
オーウェンマーシャル2010
array_mergeが2番目の配列のインデックスを再作成しています。すなわち。それは配列を
—
Garrett
array( 123 => "VALUE123" )
に変更していますarray( 0 => "VALUE123" )
うーん、それは面白いです。その点では、PHPのドキュメントが少し不明確になる可能性があります。それは場合はどうなるのかと言うすべての配列のテンキーを持っているが、特にそうでない場合はどうなるか言っていません。
—
Steven Oxley、2010
多分2年前ではない。しかし、2012年には、この点に関してドキュメントは非常に明確です。
—
cartbeforehorse