Как это сделать? Мой код здесь не работает

for($i=0;i<count($cond);$i++){
    $cond[$i] = $cond[$i][0];
}
0
Supernovah 4 Авг 2009 в 12:05

5 ответов

Лучший ответ

Это должно сработать. Почему не работает? какое сообщение об ошибке вы получаете? Вот код, который я бы использовал:

$inArr;//This is the 2D array
$outArr = array();
for($i=0;$i<count($inArr);$i++){
        $outArr[$i] = $inArr[$i][0];
}
0
Hosam Aly 4 Авг 2009 в 09:26

Это может быть так просто:

$array = array_map('reset', $array);
3
eisberg 4 Авг 2009 в 11:10

Могут возникнуть проблемы, если исходный массив не имеет числового индекса. Попробуйте вместо этого:

$destinationArray = array();
for ($sourceArray as $key=>$value) {
    $destinationArray[] = $value[0]; //you may want to use a different index than '0'
}
1
Benedict Cohen 4 Авг 2009 в 08:12
// Make sure you have your first array initialised here!
$array2 = array();
foreach ($array AS $item)
{
    $array2[] = $item[0];
}

Предполагая, что впоследствии вы захотите иметь то же имя переменной, вы можете переназначить новый массив обратно старому.

$array = $array2;
unset($array2); // Not needed, but helps with keeping memory down

Кроме того, вы можете, в зависимости от того, что находится в массиве, сделать что-то вроде.

$array = array_merge(array_values($array));
1
Mez 4 Авг 2009 в 08:21

Как было сказано ранее, ваш код не будет работать должным образом в различных ситуациях. Попробуйте инициализировать свой массив этими значениями:

$cond = array(5=>array('4','3'),9=>array('3','4'));

Решение, которое для меня лучше читается, также представляет собой следующий код:

//explain what to do to every single line of the 2d array
function reduceRowToFirstItem($x) { return $x[0]; }

// apply the trasnformation to the array
$a=array_map('reduceRowTofirstItem',$cond);

Вы можете прочитать справочник по карте массивов для подробного объяснения.

Вы также можете выбрать небольшой вариант, используя array_walk (это работать с массивом «на месте»). Обратите внимание, что функция не возвращает значение и что его параметр передается по ссылке.

function reduceToFirstItem(&$x) { $x=$x[0]; }
array_walk($cond, 'reduceToFirstItem');
1
Eineki 1 Сен 2009 в 23:00