[php] array keys hernoemen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik weet dat er een simpele functie voor is, maar ben deze even kwijt, misschien dat jullie mij kunnen helpen?

Zo is het nu:

PHP:
1
2
3
4
5
6
7
8
9
 0 => 
    array (size=7)
      0 => string 'amsterdam2' (length=10)
      1 => string 'BO' (length=2)
      2 => string '4' (length=1)
      3 => string '201612' (length=6)
      4 => string '2552' (length=4)
      5 => string '14' (length=2)
      6 => string '1969' (length=4)


Zo moet het worden:

PHP:
1
2
3
4
5
6
7
8
9
 0 => 
    array (size=7)
      'id' => string 'amsterdam2' (length=10)
      'code' => string 'BO' (length=2)
      'pid' => string '4' (length=1)
      'target' => string '201612' (length=6)
      'aantal' => string '2552' (length=4)
      'land' => string '14' (length=2)
      'jaartal' => string '1969' (length=4)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nee, die werkt alleen als de value hetzelfde is, maar dit is een array met bijna 200 resultaten.

Acties:
  • 0 Henk 'm!

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 00:44

orf

Op basis van je voorbeeld zou ik ook zeggen dat je array_combine() moet gebruiken. Waar komen de keys vandaan? Hoe moet het voor 200 resultaten werken?

Acties:
  • +1 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Je hebt sowieso array_combine nodig, misschien gecombineerd met array_walk omdat je een tweedimensioneel array hebt. Er is in elk geval niet een magische functie die eventjes je numerieke keys in een tweedimensionaal array hernoemt.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Als je pdo gebruikt, dan kan je bij het fetchen PDO::FETCH_ASSOC meegeven. Bedoel je dat soms?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De array heeft geen keys en wil slechts de keys (0,1,2,3,4,5,6) renamen naar (id, code, pid, target, aantal, land, jaartal). Kennelijk is er nog geen functie voor, zoals NMe al roept.

Acties:
  • +1 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op dinsdag 10 januari 2017 @ 17:30:
De array heeft geen keys en wil slechts de keys (0,1,2,3,4,5,6) renamen naar (id, code, pid, target, aantal, land, jaartal). Kennelijk is er nog geen functie voor, zoals NMe al roept.
Die functie is er best, en die is nou al een paar keer genoemd.
PHP:
1
$array = array_combine(['id', 'code', 'pid', 'target', 'aantal', 'land', 'jaartal'], array_values($input));

Het punt is dat je er daarmee nog niet bent, want je hebt nog een niveau erboven. Je zal dus ook een array_walk moeten doen. Zoiets dus, uit de losse pols:
PHP:
1
2
3
array_walk($array, function (&$item, $key) {
  $item = array_combine(['id', 'code', 'pid', 'target', 'aantal', 'land', 'jaartal'], array_values($item));
});

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 21-09 12:22
Verwijderd schreef op dinsdag 10 januari 2017 @ 17:30:
De array heeft geen keys en wil slechts de keys (0,1,2,3,4,5,6) renamen naar (id, code, pid, target, aantal, land, jaartal). Kennelijk is er nog geen functie voor, zoals NMe al roept.
Die is er wel, dat is de nu al 3x genoemde array_combine().
Verwijderd schreef op dinsdag 10 januari 2017 @ 17:19:
Nee, die werkt alleen als de value hetzelfde is, maar dit is een array met bijna 200 resultaten.
Wat bedoel je hiermee? Je hebt een array van 200 elementen en wilt alleen van de eerste 7 de keys veranderen?
Dan zul je misschien eerst een combinatie van array_chunk en array_merge moeten gebruiken...

Acties:
  • 0 Henk 'm!

  • xehbit
  • Registratie: Februari 2009
  • Laatst online: 26-08 22:19

xehbit

`array_combine()` zou gewoon moeten werken zoals Daos aangeeft, zie:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
  $values = [
    'amsterdam2',
    'BO',
    '4',
    '201612',
    '2552',
    '14',
    '1969',
  ];

  $keys = [
    'id',
    'code',
    'pid',
    'target',
    'aantal',
    'land',
    'jaartal',
  ];

  $result = array_combine($keys, $values);

  print_r($result);


Geeft bij mij:
code:
1
2
3
4
5
6
7
8
9
(
  [id] => amsterdam2
  [ code] => BO <-- Spatie ervoor gezet omdat anders mijn reactie stuk gaat :) 
  [pid] => 4
  [target] => 201612
  [aantal] => 2552
  [land] => 14
  [jaartal] => 1969
)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heb het zo even opgelost, dat array_walk wil niet lukken.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$aRowData['id']         = $aRowData[0];
$aRowData['code']           = $aRowData[2];
$aRowData['pid']        = $aRowData[3];
$aRowData['target'] = $aRowData[4];
$aRowData['aantal']     = $aRowData[5];
$aRowData['land']       = $aRowData[6];

            unset($aRowData[0]);
            unset($aRowData[1]);
            unset($aRowData[2]);
            unset($aRowData[3]);
            unset($aRowData[4]);
            unset($aRowData[5]);
            unset($aRowData[6]);

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Verwijderd schreef op dinsdag 10 januari 2017 @ 18:00:
Heb het zo even opgelost, dat array_walk wil niet lukken.
Wat lukte er niet dan?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Mja, je komt aan met een vage vraag waarbij je amper omschrijft wat je eigenlijk wil, vervolgens hebben we tig posts nodig om enigszins duidelijk te krijgen wat je wil en je te overtuigen van de juiste functie en uiteindelijk kies je alsnog voor de meest ranzige oplossing die er mogelijk is omdat het "niet lukt." Het lijkt bijna alsof je niet geholpen wil worden zo...

Lees voor de grap onze Quickstart een keer door om dit de volgende keer te voorkomen. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Natuurlijk werkt array_walk($aRowData) niet
Natuurlijk werkt array_combine($keys, $aRowData) wel

Kijk en lees nou eens goed |:(

[ Voor 12% gewijzigd door DJMaze op 11-01-2017 10:07 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Mja, die $aRowData heeft inderdaad dat hele tweede niveau dat in de TS stond niet...

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1