• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

problem mit array_combine()

Mars@Gera

Mitglied
Mahlzeit Community,
ich habe ein kleines Problem mit aray_combine()
ich möchte 2 Arrays zusammenfügen, was ja nun array_combine() macht.
1. Array ist mir defines befüllt:
PHP:
$field = array(LOC, SUBJ, LTWHAT, LABELNR, LABEL, PHONEM, XMIN, XMAX);
print_r($field) :=
Code:
Array (     
    [0] => Loc
     [1] => subj
     [2] => LTwhat
     [3] => LabelNr
     [4] => Label
     [5] => Phonem
     [6] => xmin
     [7] => xmax
)
2. Array wird mittels implode aus einem String "erstellt"
PHP:
$values = explode('    ', $line);
print_r($values) :=
Code:
Array (
     [0] => ANA
     [1] =>  2
    [2] =>  LT2
    [3] =>  0
    [4] =>  _
    [5] =>  _ 
    [6] =>  0
    [7] =>  0.0931848
)

Jetzt füge ich mittels array_combine() beide Arrays zusammen
PHP:
$big_array = array_combine($field, $values);
print_r($big_array) :=
Code:
Array (
     [Loc] => ANA
    [subj] =>  2
    [LTwhat] =>  LT2
    [LabelNr] =>  0
    [Label] =>  _
    [Phonem] =>  _
    [xmin] =>  0
    [xmax] =>  0.0931848
)

1. Problem:
Eigentlich brauche ich das Array in der Form:
Code:
Array (
     'Loc' => 'ANA',
     'subj' =>  '2',
     'LTwhat' =>  'LT2',
     'LabelNr' =>  '0',
     'Label' =>  '_',
     'Phonem' =>  '_',
     'xmin' =>  '0',
     'xmax' =>  '0.0931848'
)
um es dann mittels
PHP:
$result = $db->insert('INSERT INTO `' . TESTTAB . '` (`'.implode("`, `", array_keys($big_array)).'`) values ('.implode("','", array_values($big_array)).'`)');
in eine Datenbank einzufügen.
2. Problem:
Ich erhalte folgende Fehlermeldung:
Code:
Warning: array_combine(): Both parameters should have an equal number of elements in /var/www/thomas/class/files.php on line 267  Warning: array_keys() expects parameter 1 to be array, boolean given in /var/www/thomas/class/files.php on line 269  Warning: implode(): Invalid arguments passed in /var/www/thomas/class/files.php on line 269  Warning: array_values() expects parameter 1 to be array, boolean given in /var/www/thomas/class/files.php on line 269  Warning: implode(): Invalid arguments passed in /var/www/thomas/class/files.php on line 269

kann mir jemand helden?

Ich hoffe ich konnte mich verständlich artikulieren und mein Problem verständlich beschreiben

mfg Marcel
 
Werbung:
Problem 1 sollte sich geben, wenn Du die Variablen in dem Array mit Anführungszeichen umgibst um sie zu einem String zu machen:

Code:
$field = array('LOC', 'SUBJ', 'LTWHAT', 'LABELNR', 'LABEL', 'PHONEM', 'XMIN', 'XMAX');

Die 1. Warnmeldung sollte sich dadurch evtl. auch geben. Allerdings ist der Rest auch mir dann ein Rätsel.
 
Hi,
also wenn ich die dann aber mittels ' ' einschließe, dann werden die ja nicht mehr mit dem "hinterlegten" Begriff ersetzt ... erfo das Ergebnis dieses Arrays ist schon das, was raus kommen soll ;)

mfg Marcel
 
Werbung:
Das erste Problem besteht nicht. Intern handelt es sich in diesem Fall bei allen Schlüsseln und Werten um Strings.

Zum zweiten Problem:

Warning: array_combine(): Both parameters should have an equal number of elements in /var/www/thomas/class/files.php on line 267

Warning: array_keys() expects parameter 1 to be array, boolean given in /var/www/thomas/class/files.php on line 269

Warning: implode(): Invalid arguments passed in /var/www/thomas/class/files.php on line 269

Warning: array_values() expects parameter 1 to be array, boolean given in /var/www/thomas/class/files.php on line 269

Warning: implode(): Invalid arguments passed in /var/www/thomas/class/files.php on line 269

array_combine:

Returns the combined array, FALSE if the number of elements for each array isn't equal.

- PHP: array_combine - Manual

Die weiteren Fehler sind Folgefehler.

Ursache: Du verarbeitest die Eingabedaten falsch. Oder anders gesagt, ein Datensatz liegt nicht in dem erwarteten Format vor.

Du musst übrigens die Werte escapen, wenn du sie in die Query einsetzt, sonst kriegst du Schwierigkeiten, wenn die Eingabestrings ein Apostroph enthalten.
 
Zurück
Oben