Pergunta

Como você pode fazer isso? Meu código visto aqui não trabalho

for($i=0;i<count($cond);$i++){
    $cond[$i] = $cond[$i][0];
}
Foi útil?

Solução

Isso deve funcionar. Por que não funciona? Que mensagem de erro que você recebe? Este é o código que eu usaria:

$inArr;//This is the 2D array
$outArr = array();
for($i=0;$i<count($inArr);$i++){
        $outArr[$i] = $inArr[$i][0];
}

Outras dicas

Pode ser tão simples como isto:

$array = array_map('reset', $array);

Pode haver problemas se a matriz de origem não é numericamente índice. Tente isto em vez disso:

$destinationArray = array();
for ($sourceArray as $key=>$value) {
    $destinationArray[] = $value[0]; //you may want to use a different index than '0'
}
// Make sure you have your first array initialised here!
$array2 = array();
foreach ($array AS $item)
{
    $array2[] = $item[0];
}

Assumindo que você quer ter o mesmo nome de variável depois, você pode voltar a atribuir a nova matriz de volta para o antigo.

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

Além disso, você pode ser capaz de, dependente do que está na matriz, fazer algo assim.

$array = array_merge(array_values($array));

Como foi referido anteriormente, o código não vai funcionar corretamente em várias situações. Tente inicializar a matriz com estes valores:

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

Uma solução, para mim melhor legível também o seguinte código:

//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);

Você pode ler o referência por mapa variedade para uma explicação completa.

Você pode optar também por uma ligeira variação usando array_walk (-lo funcionar com a matriz "in place"). Note que a função não retorna um valor e que seu parâmetro é passado por referência.

function reduceToFirstItem(&$x) { $x=$x[0]; }
array_walk($cond, 'reduceToFirstItem');
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top