0

連想配列の要素から新しい配列を作成するには、値が整数の場合、その値を新しい配列の最初の場所に配置し、2 番目の場所に double を配置し、3 番目の場所に文字列を配置し、最後の場所にその値を配置するにはどうすればよいですか?要素数。私はこのようなことを試みますが、うまくいきません。

<?php
$array = array ('first' => 2.54, 'second' => "foo", 'third' => 1);
function myFunction($array)
{   $NewArray = array ();
    $[3] = 0;
foreach($array as $value)
{
    if(is_integer($value))
    {echo $NewArray[0] = $value.' ';}
    if(is_double($value))
    {echo $NewArray[1] = $value.' ';}
    if(is_string($value))
    {echo $NewArray[2] = $value.' ';}
    echo $NewArray[3] += 1 . ' ';}
    return $NewArray;}
MyFunction ($array);
?>
4

1 に答える 1

0

Mathieu Imbert は正しく、コードを実行したときに何が問題だったのかを説明していません。myFunction返すべきものに基づいて修正しました(質問で指定されているとおり)。

' '値の後にスペースを入れたい場合を除き、これらの値を文字列と連結しないでください。最後に、返された配列の 3 番目の位置にある要素の数が必要な場合は、カウンターを連結しないでください。' 'その連結により、カウンターは'1 1 1 '(質問のサンプル配列の場合) になります。それがなければ - 3

修正され、テストされたコードは次のとおりです (コードを自由に再フォーマットして読みやすくしprint_r()、よりきれいな出力のために追加しました)。

<?php
    $array = array('first' => 2.54, 'second' => "foo", 'third' => 1);
    function myFunction($array) {
        $newArray = array();
        $newArray[3] = 0;
        foreach($array as $value) {
            if (is_integer($value)) {
                $newArray[0] = $value;
            }
            if (is_double($value)) {
                $newArray[1] = $value;
            }
            if (is_string($value)) {
                $newArray[2] = $value;
            }
            $newArray[3] += 1;
        }
        return $newArray;
    }
    print_r(myFunction($array));
?>

出力:

Array
(
    [3] => 3
    [1] => 2.54 
    [2] => foo 
    [0] => 1 
)
于 2012-12-04T18:07:13.263 に答える