Pular para o conteúdo principal

FOREACH e LIST no PHP - Problema na instrução

Prezados,

No manual do PHP em http://php.net/manual/pt_BR/control-structures.foreach.php, há um problema na instrução quando se usa o "foreach" com "list", no exemplo descrito está:

$array = [
    [1, 2],
    [3, 4],
];

foreach ($array as list($a, $b)) {
    // $a contains the first element of the nested array,
    // and $b contains the second element.
    echo "A: $a; B: $b\n";
}

Mas há um problema na linha "foreach ($array as list($a, $b)) {" onde ocorre o problema "Notice: Undefined offset:" e o código não executa.

Buscando na internet uma solução, encontrei no fórum "https://bugs.php.net/bug.php?id=10203" a seguinte solução do usuário "torben@php.net":

$arr = array(array(1, 2), array(3, 4));
foreach ($arr as $narr) {
    list($a, $b) = array_values($narr);
    echo "$a, $b\n";
}

Dessa forma o loop funcionou como o esperado para o propósito do array.

Abraços.

Comentários

Postagens mais visitadas deste blog

X5 - SEU ACESSO A ESTE SISTEMA FOI BLOQUEADO - CEF

Prezados, Um amigo meu teve seu acesso ao site da Caixa Econômica Federal - CEF foi bloqueado.  Ao ligar para o suporte, não obteve sucesso no desbloqueio, sendo a única "alternativa" FORMATAR A MÁQUINA para que assim, a "identificação" do computador pudesse mudar, tudo ser reinstalado com essa nova identificação e desbloqueado o acesso. Não contente com isso buscamos na internet algum caso parecido e nos deparamos com vários casos iguais e com a mesma "solução".    Sendo esta uma solução "fatal",  um dos comentários de um caso no site "Reclame Aqui" ofereceu uma solução melhor: "Va até o painel de controle e desinstale o programa "WARSAW", quando reiniciar o computador entre novamente no site pelo IE ou CHROME ele vai reinstalar o programa . Pronto Resolvido!" Feito isso ao tentar acessar o site é instalado novamente o "módulo de segurança" (que demora bastante por sinal) e tudo voltou ao normal.

Excluindo arquivos e pastas de backup antigas automaticante - FORFILES

Tenho rotinas de backup que copiam/criam diretórios e estes são compactados.  O problema é que, se os mais antigos não forem apagados, perde-se grandes espaços em disco.  Buscando soluções para linhas de comandos em arquivos bat (batch/DOS) encontrei o (milagroso) comando FORFILES onde com duas linhas de comando, resolvi meu problema: 1 - apaga somente os arquivos .rar com mais de 3 dias FORFILES /P "c:\seudiretorio\seusubdiretorio" /M *.rar /D -3 /C "cmd /c echo @path" 2 - apaga os arquivos dos diretórios com mais de 3 dias FORFILES /P "D:\Backup_Geral\Backup_DBs_EGTec" /D -3 /C "cmd /c del @path /q" 3 - Apaga os diretórios com mais de 3 dias FORFILES /P "D:\Backup_Geral\Backup_DBs_EGTec" /D -3 /C "cmd /c rd @path /s /q" Com estes comandos sendo executados por um arquivo batch (.bat) os backups com mais de 3 dias (no meu caso) são excluídos automaticamente. Para maiores detalhes sobre o comando e seus parâmetros

Acentos em Alert box - Javascript

Esta é para quem, assim como eu, sempre teve problemas de acentuação de caracteres nas caixas de alerta do javascript em suas páginas: substitua o acento pelo seu código em Unicode. Por exemplo: alert('Este é um teste de acentuação em um Alert Box.'); Mensagem substituída: alert(' Este \u00e9 um teste de acentua\u00e7\u00e3o em um Alert Box .'); Segue a tabela de codificação a ser utilizada: á = \u00e1 à = \u00e0 â = \u00e2 ã = \u00e3 ä = \u00e4 Á = \u00c1 À = \u00c0 Â = \u00c2 Ã = \u00c3 Ä = \u00c4 é = \u00e9 è = \u00e8 ê = \u00ea ê = \u00ea É = \u00c9 È = \u00c8 Ê = \u00ca Ë = \u00cb í = \u00ed ì = \u00ec î = \u00ee ï = \u00ef Í = \u00cd Ì = \u00cc Î = \u00ce Ï = \u00cf ó = \u00f3 ò = \u00f2 ô = \u00f4 õ = \u00f5 ö = \u00f6 Ó = \u00d3 Ò = \u00d2 Ô = \u00d4 Õ = \u00d5 Ö = \u00d6 ú = \u00fa ù = \u00f9 û = \u00fb ü = \u00fc Ú = \u00da Ù = \u00d9 Û = \u00db ç = \u00e7 Ç = \u00c7 ñ = \u00f1 Ñ = \u00d1 & = \u0