Vad returnerar: return $arr[] = 'whatever';?

Vad säger din intuition att detta php-expression borde returnera? return $arr[] = 'whatever';

null
4
29%
"whatever"
5
36%
[ "whatever" ]
5
36%
 
Antal röster : 14

  • Författare
  • Meddelande
Användarvisningsbild

litemerafrukt

troubleshooter

  • Inlägg: 262
  • Blev medlem: 01 sep 2015, 09:27
  • Ort: Lund

Vad returnerar: return $arr[] = 'whatever';?

Inlägg08 jun 2017, 14:37

PHP är lätt att både älska och hata :D Själv lutar jag oftast åt det förra men ibland förstår jag bara inte hur de tänkt när de designat språket. Men kanske är det bara min intuition som behöver kalibreras :roll:

Vad säger din magkänsla att return $arr[] = 'whatever'; borde returnera?
Användarvisningsbild

Allinrep

dbwebb

  • Inlägg: 1124
  • Blev medlem: 03 sep 2012, 09:19
  • Ort: Portugal (tillfälligt)

Re: Vad returnerar: return $arr[] = 'whatever';?

Inlägg08 jun 2017, 16:47

Det jag tror finns inte med som alternativ, så jag antar att jag har fel :)
Användarvisningsbild

litemerafrukt

troubleshooter

  • Inlägg: 262
  • Blev medlem: 01 sep 2015, 09:27
  • Ort: Lund

Re: Vad returnerar: return $arr[] = 'whatever';?

Inlägg09 jun 2017, 13:12

Jag tänkte inte på fler alternativ :)

Personligen läser jag uttrycket return $arr[] = 'whatever'; som "Lägg till ett nytt element i arrayen och returnera resultatet av uttrycket." Det vill säga om $arr är tom eller inte finns returneras ["whatever"].

Vilket är fel.

Det som händer är att det skapas en ny array $arr (om denna inte redan finns). Sedan läggs "whatever" till sist i arrayen. Resultatet av uttrycket $arr[] = 'whatever'; är dock inte den modifierade arrayen utan det är 'whatever', dvs bara det som finns på högra sidan av tilldelningsoperatorn. Det som returneras är strängen "whatever".
Användarvisningsbild

thulin

troubleshooter

  • Inlägg: 514
  • Blev medlem: 30 dec 2015, 15:33
  • Ort: Skurup

Re: Vad returnerar: return $arr[] = 'whatever';?

Inlägg09 jun 2017, 16:47

Härlig fördelning av röster (3/3/3) just nu!
/Thulin
Användarvisningsbild

mos

dbwebb

  • Inlägg: 11177
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Vad returnerar: return $arr[] = 'whatever';?

Inlägg09 jun 2017, 17:09

Returvärdet är, som sagt var, resultatet av tilldelningssatsen. Det kan även skrivas så här:
Kod: Markera allt
echo $a[0] = "moped";


Det finns någon logik i att när man tilldelar något in i ett array-element så är det värdet i array-elementet som är resultatet. Men kanske är det $a[] som upplevs lite lurigare än $a[0].
...
..:
.... /mos
Användarvisningsbild

Allinrep

dbwebb

  • Inlägg: 1124
  • Blev medlem: 03 sep 2012, 09:19
  • Ort: Portugal (tillfälligt)

Re: Vad returnerar: return $arr[] = 'whatever';?

Inlägg09 jun 2017, 21:48

Jag trodde att resultatet skulle bli en boolean som talade om huruvida tilldelningen lyckades eller inte. Det borde alltså blivit True, med mitt tänk.

sharpless

regexp-master

  • Inlägg: 130
  • Blev medlem: 10 nov 2011, 14:35

Re: Vad returnerar: return $arr[] = 'whatever';?

Inlägg10 jun 2017, 10:35

Kom att tänka på att man kan ju skriva så här:

Kod: Markera allt
$foo = $bar = "foobar";


Och om man har det i åtanke, så är det ju inte särskilt ologiskt att det som returneras av själva tilldelningsoperatorn är det värde som har tilldelats variabeln?

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 33 gäster