-1

基本的に、この配列を作成して、インデックス付き配列を連想配列に変換しました。

これが私の入力配列だと言う

$input = array('this is the title','this is the author','this is the location','this is the quote');

これが私の機能です

function dynamicAssocArray($input)
{
    $result = array();
    $assocArrayItems = array('title', 'author', 'location', 'quote');
    $assocItem;

    foreach ($input as $value)
    {
        for ($i=0; $i <= 3; $i++)
        {
            $assocItem = $assocArrayItems[$i];
        }
        $result = $result[$assocItem] = $value;
    }
    return $result;
}

このエラー「警告:不正な文字列オフセット '引用符'」が表示され、出力は string(1) "t" になります

私は完全に理解していないので、どんな助けでも大歓迎です。

4

3 に答える 3

2

phpで変数を開始する必要はありません。これにより、行が$assocItem;無意味になります。以下のコードでうまくいくはずです。

function dynamicAssocArray($input)
{
    $result = array();
    $assocArrayItems = array('title', 'author', 'location', 'quote');

    foreach ($input as $i => $value)
    {
        $assocItem = $assocArrayItems[$i];
        $result[$assocItem] = $value;
    }
    return $result;
}

または、array_combine()を使用することをお勧めします。

function dynamicAssocArray($input)
{
    $assocArrayItems = array('title', 'author', 'location', 'quote');
    $result = array_combine($assocArrayItems, $input);
    return $result;
}
于 2012-08-03T17:58:40.317 に答える
1

あなたは

  1. 4回上書きします$assocItem(最後の値のみを残します)
  2. 配列に割り当て$valueます$result(文字列にします)。

本当にループが必要ですか?値が4つしかない場合は、明示的に記述する方が簡単です。

function dynamicAssocArray($input)
{
    return array(
      'title' => $input[0],
      'author' => $input[1],
      'author' => $input[2],
      'quote' => $input[3]
    );
}

または、decezeがコメントスレッドに配置するように、組み込みarray_combine関数を使用するだけです。

于 2012-08-03T17:58:35.500 に答える