1

DBからいくつかの異なる値を選択する以下のような関数があります。配列を他の関数に渡す前に、これらの値の 1 つを編集する必要があります。

問題は、編集された要素を含む配列を返す方法がわからないことです。配列内の値を編集して完全な配列を返すにはどうすればよいですか?編集された要素は含まれていますか?

function eGetDashboard($eID, $pdo) {
    $dashboard = PDOjoin('event', 'event.*, join_category_event.*, join_event_user.*, _dashboard.*, _dashboard_icons.*', array(
        array('LEFT JOIN' => 'join_category_event', 'ON' => 'event.id_event = join_category_event.id_event'),
        array('LEFT JOIN' => 'join_event_user', 'ON' => 'event.id_event = join_event_user.id_event'),
        array('LEFT JOIN' => '_dashboard', 'ON' => 'join_category_event.id_category = _dashboard.id_category'),
        array('LEFT JOIN' => '_dashboard_icons', 'ON' => 'join_category_event.id_category = _dashboard_icons.id_category')
            ), array('event.id_event' => $eID), $pdo);
    foreach ($dashboard as $eDashboard)
        $label =  eSetDashboardLabel($eDashboard['multimedia_descr'], getLang());
    return $dashboard;
}

function eSetDashboardLabel($label, $lang) {
        $label = explode(";", $label);
        foreach ($label as $labels) {
            if (substr($labels, 1, 2) == $lang)
                return substr($labels, 4);
        }
    }
4

1 に答える 1

3

要素への参照(注: ) を使用する&と、すべての変更が元の要素に影響します。

foreach ($dashboard as &$eDashboard) {
    $eDashboard['multimedia_descr'] = eSetDashboardLabel($eDashboard['multimedia_descr'], getLang());
}

または、ループ内でキーをキャプチャして配列を参照することもできます。

foreach ($dashboard as $key => $eDashboard) {
    $dashboard[$key]['multimedia_descr'] = eSetDashboardLabel($eDashboard['multimedia_descr'], getLang());
}
于 2013-07-04T10:23:42.560 に答える