Obrigado, você está certo. Definitivamente, não é tão fácil ou rápido quanto algo integrado. Sinta-se à vontade para copiar e colar se isso ajudar a torná-lo mais fácil: D
Aaron
7
Se algo está !empty, também é sempre isset, não há necessidade de verificar novamente. Além disso, como $chunké um parâmetro obrigatório da função, ele precisa ser passado para a função ou o PHP reclamará. Isso significa que esta verificação pode ser abreviada para if ($chunk)(para ver se ela é falsamente ou "vazia"). Mas, se $chunknão contiver nada, nada acontecerá mesmo. Portanto, todo este corpo de função pode ser abreviado para return $string . $chunk. O que significa que toda essa função é bastante desnecessária.
deceze
1
Você pode ter uma variável definida, mas também pode estar vazia. Por exemplo, uma variável com o valor "" está vazia, mas também definida.
Aaron
1
Sim, mas estou dizendo que sua função é uma forma muito prolixa de escrever $foo . $bar. Eu o desafio a encontrar qualquer caso importante em que sua função faça algo diferente. :)
deceze
3
Eu sei que isso foi perguntado / respondido há algum tempo, mas fornecendo esta resposta porque é funcionalmente equivalente, apesar de não ser um operador de atribuição e ninguém comentar sobre seu uso para concatenação geral de strings.
Você pode querer olhar para o uso da família sprintf( documentação ) de funções para concatenação de strings. Ele fornece muito mais higienização e usabilidade do que apenas combinar duas strings com operadores de atribuição.
Infelizmente, não acho que sprintf () seja tão rápido quanto concats simples. E certamente não parece tão compatível com a sintaxe também. Consulte: stackoverflow.com/q/7147305/2430549
HoldOffHunger
Correto, embora não tenha certeza de como você entende por amigável de sintaxe. Embora não seja tão rápido ou simplista quanto a concatenação. sprintfé comumente usado em vários idiomas. sprintftem seu lugar e propósito sobre quando usá-lo. por exemplo. a conversão de vários valores ou a aplicação de uma série de entradas usando sprintf, fornece mais funcionalidade do que a simples concatenação, quando necessário . Veja: 3v4l.org/8PWil Mas não deve ser usado como um substituto completo para a concatenação.
fyrye,
3
Você pode encapsular a função incorporada substr_replace, onde os argumentos $ start e $ length podem ser definidos como 0, que precede $ substituição para $ string e retorna o resultado, assim:
function prepend(& $string, $prefix){
$string = substr_replace($string, $prefix,0,0);}
Não vejo interesse em usar substr_replace; fazer um simples $string = $prefix.$string;na função fará o truque.
Pierre-Olivier Vares
2
Transformando o comentário de Blakethepatton em uma resposta (obrigado), uma maneira de fazer isso de forma mais organizada para nomes de variáveis mais longos é usar uma referência à variável da seguinte maneira:
$f =&$foo; $f ="bar{$f}";
Isso vai poupar você de digitar a resposta de Eric V se o nome da variável original tiver 12 caracteres ou mais.
$foo
a$bar
, em vez de anexar$bar
a$foo
. O resultado é semelhante, mas acho que ele quer sofrer uma mutação$foo
.Respostas:
Não. Mas você pode fazer
fonte
Você sempre pode fazer sua própria função para isso:
$string
seria a parte que você deseja prefixar e$chunk
o texto em que deseja que algo prefixado nela.Você poderia dizer que as verificações são opcionais, mas por ter isso lá, você não precisa se preocupar em passar um valor nulo por acidente.
fonte
!empty
, também é sempreisset
, não há necessidade de verificar novamente. Além disso, como$chunk
é um parâmetro obrigatório da função, ele precisa ser passado para a função ou o PHP reclamará. Isso significa que esta verificação pode ser abreviada paraif ($chunk)
(para ver se ela é falsamente ou "vazia"). Mas, se$chunk
não contiver nada, nada acontecerá mesmo. Portanto, todo este corpo de função pode ser abreviado parareturn $string . $chunk
. O que significa que toda essa função é bastante desnecessária.$foo . $bar
. Eu o desafio a encontrar qualquer caso importante em que sua função faça algo diferente. :)Eu sei que isso foi perguntado / respondido há algum tempo, mas fornecendo esta resposta porque é funcionalmente equivalente, apesar de não ser um operador de atribuição e ninguém comentar sobre seu uso para concatenação geral de strings.
Você pode querer olhar para o uso da família
sprintf
( documentação ) de funções para concatenação de strings. Ele fornece muito mais higienização e usabilidade do que apenas combinar duas strings com operadores de atribuição.Eu normalmente uso
vsprintf
, já que trabalhar com matrizes é mais fácil de gerenciar posições de valor do que argumentos individuais.Também com uma matriz de valores, pode-se simplesmente
implode
o conjunto de valores resultante para concatenação de string simples.fonte
sprintf
é comumente usado em vários idiomas.sprintf
tem seu lugar e propósito sobre quando usá-lo. por exemplo. a conversão de vários valores ou a aplicação de uma série de entradas usandosprintf
, fornece mais funcionalidade do que a simples concatenação, quando necessário . Veja: 3v4l.org/8PWil Mas não deve ser usado como um substituto completo para a concatenação.Você pode encapsular a função incorporada
substr_replace
, onde os argumentos $ start e $ length podem ser definidos como 0, que precede $ substituição para $ string e retorna o resultado, assim:Um exemplo de uso da função auxiliar seria:
Se você gosta de programação procedural, claro.
fonte
$string = $prefix.$string;
na função fará o truque.Transformando o comentário de Blakethepatton em uma resposta (obrigado), uma maneira de fazer isso de forma mais organizada para nomes de variáveis mais longos é usar uma referência à variável da seguinte maneira:
Isso vai poupar você de digitar a resposta de Eric V se o nome da variável original tiver 12 caracteres ou mais.
Uma alternativa em uma linha:
fonte