php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.06.2008, 12:42  
Erfahrener Benutzer
 
Registriert seit: 03.08.2007
Beiträge: 127
fragnicht befindet sich auf einem aufstrebenden Ast
Standard php schreibt kein array ins array sondern string

Nach der verwirrenden Überschrift mal die erläuterung:

$array1
ist ein array wie z.B.
PHP-Code:
print_r($this->array1);
Array
(
    [
0] => index.html
    
[1] => index1.html
    
[2] => index2.html

so dann bastel ich mit
PHP-Code:
$this->array1[1]['weitereseiten'] = $this->functionAufruf();

print_r($this->functionAufruf()); 
sagt uns z.B. auch
PHP-Code:
Array
(
    [
0] => index.html
    
[1] => index1.html
    
[2] => index2.html

das $this->array1 soll dann so aussehen

PHP-Code:
Array
(
    [
0] => index.html
       
['weitereseiten'
                        [
0] => index.html
                        
[1] => index1.html
                        
[2] => index2.html

    
[1] => index1.html
       
['weitereseiten'
                        [
0] => index.html
                        
[1] => index1.html
                        
[2] => index2.html

    
[2] => index2.html
       
['weitereseiten'
                        [
0] => index.html
                        
[1] => index1.html
                        
[2] => index2.html


es steht aber:

PHP-Code:
Array
(
    [
0] => Andex.html
    
[1] => Andex1.html
    
[2] => Andex2.html

also im Original bei mir stehen A weil er das A von Array nimmt so als würde er eine print ausgabe dem array1 geben und nicht eine print_r

habt Ihr da ne Idee? Ich verwende das ganze Übrigens in eienr Klasse, siehtm an ja an $this ...
fragnicht ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.06.2008, 13:14  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Naja das ist ja auch logisch! Das hier:

PHP-Code:
Array
(
    [
0] => index.html
       
['weitereseiten'
                        [
0] => index.html
                        
[1] => index1.html
                        
[2] => index2.html

    
[1] => index1.html
       
['weitereseiten'
                        [
0] => index.html
                        
[1] => index1.html
                        
[2] => index2.html

    
[2] => index2.html
       
['weitereseiten'
                        [
0] => index.html
                        
[1] => index1.html
                        
[2] => index2.html


ist ja auch keine Array-Struktur oder hast du sowas schonmal gesehen?

würdest du vor deiner zuweisung mit dem 2ten Array ein echo $array1[1]; machen würde er dir ja auch einen String ausgeben. Du musst dich schon entscheiden ob du an $array1[1] jetzt nen String oder nen Array haben willst, es geht schließlich nur eins von beidem.
cycap ist offline  
Alt 19.06.2008, 13:41  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Zitat von fragnicht Beitrag anzeigen
also im Original bei mir stehen A weil er das A von Array nimmt so als würde er eine print ausgabe dem array1 geben und nicht eine print_r
Nicht ganz. Die Indexzuweisung [..] kann analog zur {..} Syntax für Strings auch verwendet werden, um auf einzelne Buchstaben zuzugreifen. Und da es wie gesagt dieses gewünschte Konstrukt nicht gibt, überschreibst Du den alten Schlüssel, allerdings nur an Position 1. Da als Character nur ein String funktioniert wird eine impizite Typumwandlung Array > String vorgenommen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 19.06.2008, 13:44  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Zitat:
Zitat von nikosch77-new Beitrag anzeigen
Nicht ganz. Die Indexzuweisung [..] kann analog zur {..} Syntax für Strings auch verwendet werden, um auf einzelne Buchstaben zuzugreifen. Und da es wie gesagt dieses gewünschte Konstrukt nicht gibt, überschreibst Du den alten Schlüssel, allerdings nur an Position 1. Da als Character nur ein String funktioniert wird eine impizite Typumwandlung Array > String vorgenommen.
Laut deiner Aussage und dem hier:

PHP-Code:
$this->array1[1]['weitereseiten'] = $this->functionAufruf(); 

müsste aber 'weitereseiten' == 0 sein, also eigentlich sollte es hier nen dicken Error geben
cycap ist offline  
Alt 19.06.2008, 13:46  
Erfahrener Benutzer
 
Registriert seit: 03.08.2007
Beiträge: 127
fragnicht befindet sich auf einem aufstrebenden Ast
Standard

Naja ich würde ja gern aus einer Dimension zwei Dimensionen machen.

was ich benutze ob

PHP-Code:
$this->ar[1][0
oder

PHP-Code:
$this->ar[1]['seiten'
ist relativ den beides geht nicht. Habe dieses Problem noch nie gehabt.

Einziger Error bzw. Notice ist :
PHP-Code:
Notice:  Array to string conversion in /var/www/piperweb/de/linknet/classes/class.domainspider.php on line 39 
Oke verstehe ich schon... aber was wäre den eine Lösung?

Geändert von fragnicht (19.06.2008 um 13:49 Uhr).
fragnicht ist offline  
Alt 19.06.2008, 13:50  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Zum Beispiel das:
PHP-Code:

// ersetzen: $this->array1[1]['weitereseiten'] = $this->functionAufruf();
$this->array1[1] = array(
  
'name' => $this->array1[1],
  
'weitereseiten' => $this->functionAufruf()
); 
cycap ist offline  
Alt 19.06.2008, 13:51  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Hihi. Ausprobiert. Es ist noch gewitzter. Da für PHP anscheinend nur die Character-Zugriff Syntax in Frage kommt, erfolgt noch eine Zweite Typumwandlung - 'weitereseiten' wird in INT konvertiert. Vgl.:
PHP-Code:
<?
error_reporting 
(E_ALL  E_STRICT);

$in = array ('abc' 'cde');
$in[0]['test'] = '*';
$in[0]['2est'] = '*';

print_r($in);

// Array ( [0] => ab* [1] => cde )
(INT) 'test' ist 0, weil kein numerisches Zeichen zu Begin
(INT) '2est' ist 2, weil 2 zu Begin
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 19.06.2008, 13:55  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Zitat:
Zitat von nikosch77-new Beitrag anzeigen
Hihi. Ausprobiert. Es ist noch gewitzter. Da für PHP anscheinend nur die Character-Zugriff Syntax in Frage kommt, erfolgt noch eine Zweite Typumwandlung - 'weitereseiten' wird in INT konvertiert. Vgl.:
PHP-Code:
<?
error_reporting 
(E_ALL  E_STRICT);

$in = array ('abc' 'cde');
$in[0]['test'] = '*';
$in[0]['2est'] = '*';

print_r($in);

// Array ( [0] => ab* [1] => cde )
(INT) 'test' ist 0, weil kein numerisches Zeichen zu Begin
(INT) '2est' ist 2, weil 2 zu Begin
Die Theorie kann doch auch wieder nicht stimmen, dann würde dein Ergebnis doch *b* lauten und nicht ab* ???

[edit]
ausprobiert: die Theorie stimmt, aber du hast dich beim Ergebnis wohl verschrieben...
cycap ist offline  
Alt 19.06.2008, 14:02  
Erfahrener Benutzer
 
Registriert seit: 03.08.2007
Beiträge: 127
fragnicht befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von cycap Beitrag anzeigen
Zum Beispiel das:
PHP-Code:

// ersetzen: $this->array1[1]['weitereseiten'] = $this->functionAufruf();
$this->array1[1] = array(
  
'name' => $this->array1[1],
  
'weitereseiten' => $this->functionAufruf()
); 

Super jetzt funzt das
Ich danke euch!
fragnicht ist offline  
Alt 19.06.2008, 14:10  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Also PHP kann echt die tollesten Sachen so ist

PHP-Code:
if((int)'-21eh3zrt6' === -21
true und nichtmal ne Notice...
cycap ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
String bei Zeichen X trennen und in array umwandeln MeisterGlanz PHP Tipps 2006 5 13.09.2006 15:28
Multidimensionales Array nach String sortieren ssm PHP Tipps 2006 12 29.03.2006 15:38
Übersicht aus mehrdimensionalem Array erzeugen Crypi PHP-Fortgeschrittene 0 30.01.2006 13:44
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
Assoziatives Array mit String initialisieren PHP Tipps 2006 10 17.01.2006 14:01
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
Abfrage mit id aus anderer Tabelle suter PHP Tipps 2004-2 15 16.12.2004 14:25
String in Array umwandeln PHP Tipps 2004-2 15 24.11.2004 16:53
preg_replace mit array und string PHP-Fortgeschrittene 1 01.11.2004 10:02

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
piperweb.de, array schreibt array, php schreibt html, html sonder strings, php schreibt array, php functionaufruf string generieren, syntax string php

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:50 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum