3

array_combine php 関数は、変数が int 値の場合、文字列変数のデータ型を保持しません

簡単な例:

$a = array('1', '2');
$b = array('first', 'second');
$c = array_combine($a, $b);
$ak = array_keys($c);
var_dump($ak);

これにより、1 と 2 の整数値として出力が生成されます。

私が欲しかったのは、値1と2の文字列型を保持することです

一時的に、私は使用しました:

最終的に私が望むものを達成するためにarray_walk。

4

1 に答える 1

4

これは、array_combine()関数の特定の動作によるものではなく、PHP 配列での有効な整数キーの型キャストによるものです。

$array = [1=>'foo', '2'=>'bar', 'x'=>'baz'];
var_dump($array); // 1 and 2 are int

キーの型キャストに関するその他のルールもいくつかあります (上記のリンクを参照)。

ただし、とにかく文字列キーを実現するためのいくつかのトリックがあります。

$obj = new StdClass();
$obj->{'1'}='foo';
var_dump((array)$obj);//array(1) { ["1"]=> string(3) "foo" } 

-しかし、それは情報提供のみを目的としています-それを使用することはお勧めしません. あなたの質問については、array_map()結果に適用するようなものを使用できますarray_keys()が、それはあなたを救うことはできません.どのキーが整数で、どのキーが文字列であるかを判断することはできません.

于 2013-11-11T09:01:14.957 に答える