FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » list() Struktur auslagern
Show: Today's Messages :: Polls :: Message Navigator
Switch to threaded view of this topic Create a new topic Submit Reply
list() Struktur auslagern [message #176699] Wed, 18 January 2012 16:34 Go to next message
Maximilian Koch is currently offline  Maximilian Koch
Messages: 1
Registered: January 2012
Karma: 0
Junior Member
Hallo NG

ich möchte aus einer CSV datei die inhalte auslesen, diese können sich
jedoch mal ändern in der reihenfolge. und es wird danach umständlich an
mehreren orten im PHP Script die sache zu ändern..

gäbe es nicht eine möglichkeit diese auszulegen..

in etwa so:
------------------------------

$datenstruktur = "$land, $artnrCH, $artnrAT, $artnrDE, $rezepturnummer,
$artikel, $reichweiteintagen, $reichweitebismbintagen, $istbestand,
$planPPS, $reservation, $planrwbismbintagen, $mindestbestand, $netogewicht,
$me, $kostenstelle, $MHD, $vepal, $gebch, $chrez, $schnitt3M, $schnitt6M,
$schnitt12M, $schnitttotal";

foreach ($datenbank as $datenbank_temp)
{
list($dispoliste_datenstruktur) = explode(";",
$datenbank_temp);
}
----------------------------------------------

allerdings funktioniert das so nicht. kann mir jemand weiterhelfen?

Danke
Re: list() Struktur auslagern [message #176700 is a reply to message #176699] Wed, 18 January 2012 19:44 Go to previous messageGo to next message
Erwin Moller is currently offline  Erwin Moller
Messages: 228
Registered: September 2010
Karma: 0
Senior Member
On 1/18/2012 5:34 PM, Maximilian Koch wrote:
> Hallo NG
>
> ich möchte aus einer CSV datei die inhalte auslesen, diese können sich
> jedoch mal ändern in der reihenfolge. und es wird danach umständlich an
> mehreren orten im PHP Script die sache zu ändern..
>
> gäbe es nicht eine möglichkeit diese auszulegen..
>
> in etwa so:
> ------------------------------
>
> $datenstruktur = "$land, $artnrCH, $artnrAT, $artnrDE, $rezepturnummer,
> $artikel, $reichweiteintagen, $reichweitebismbintagen, $istbestand,
> $planPPS, $reservation, $planrwbismbintagen, $mindestbestand, $netogewicht,
> $me, $kostenstelle, $MHD, $vepal, $gebch, $chrez, $schnitt3M, $schnitt6M,
> $schnitt12M, $schnitttotal";
>
> foreach ($datenbank as $datenbank_temp)
> {
> list($dispoliste_datenstruktur) = explode(";",
> $datenbank_temp);
> }
> ----------------------------------------------
>
> allerdings funktioniert das so nicht. kann mir jemand weiterhelfen?
>
> Danke
>
>


[In English: I can read German a little, but not produce it.]

You command:
explode(";",$datenbank_temp);
will explode on ;

For example:
$myPartsArray = explode(",","eins,zwei,drei");

Now you have 3 elements in your array:
$myPartsArray[0] <-- "eins"
$myPartsArray[1] <-- "zwei"
$myPartsArray[2] <-- "drei"


Looking at your example you want to explode on "," and not on ";".

Also: You use list(), which makes no sense like that.
Explode() already returns an array, so you can just do:

$dispoliste_datenstruktur = explode(",",$datenbank_temp);

That way you'll have all in the array $dispoliste_datenstruktur.

You can always check what is inside some array quickly using the handy
function print_r(), like this:

echo "<pre>";
print_r($dispoliste_datenstruktur);
echo "</pre>";

In case I didn't answer your question at all, which is very possible,
just ask again. :-)

Regards,
Erwin Moller

--
"That which can be asserted without evidence, can be dismissed without
evidence."
-- Christopher Hitchens
Re: list() Struktur auslagern [message #176755 is a reply to message #176699] Sun, 22 January 2012 06:00 Go to previous messageGo to next message
Thomas 'PointedEars'  is currently offline  Thomas 'PointedEars'
Messages: 701
Registered: October 2010
Karma: 0
Senior Member
Maximilian Koch wrote:

> ich m�chte aus einer CSV datei die inhalte auslesen, diese k�nnen sich
> jedoch mal �ndern in der reihenfolge. und es wird danach umst�ndlich an
> mehreren orten im PHP Script die sache zu �ndern..

fgetcsv() und auch Dein Ansatz liefern Dir ein Array. Du kannst *einmalig*
den Wert eines Array-Elements einer Variablen zuweisen, und dann im Script
die Variable verwenden. Alternativ kannst Du *einmalig* Konstanten oder
Eigenschaften definieren, welche als Wert den jeweiligen Array-Index haben
(ich empfehle hier einen objektorientierten Ansatz mit Klassenkonstanten,
oder Eigenschaften, wenn es flexibler sein muss), und dann verwendest Du die
Konstante oder Eigenschaftsreferenz als Array-Index. Zum Beispiel so
(ungetestet, aber in dieser Form bewährt):

class Import
{
protected $_fields = array(
0 => 'country',
1 => 'sku_ch'
);

public function import($file)
{
$mapper = ArticleMapper::getInstance();

$mapper->startTransaction();

while (($data = fgetcsv($file)) !== false)
{
for ($i = count($data); $i--;)
{
$data[$this->_fields[i]] = $data[i];
}

$article = new Article($data);

try
{
$mapper->save($article);
}
catch (Exception $e)
{
$mapper->rollBack();
break;
}
}

if ($data === false && !$mapper->commit())
{
$mapper->rollBack();
}
}
}

> g�be es nicht eine m�glichkeit diese auszulegen..

"auszulegen"? Bitte erst lesen, dann denken, dann posten.

BTW: de.comp.lang.php existiert.

BTW2: Deine Umlaute sind kapott, lies bitte vor weiteren Postings
<http://oe-faq.de/>.


PointedEars
--
Anyone who slaps a 'this page is best viewed with Browser X' label on
a Web page appears to be yearning for the bad old days, before the Web,
when you had very little chance of reading a document written on another
computer, another word processor, or another network. -- Tim Berners-Lee
Re: list() Struktur auslagern [message #176756 is a reply to message #176700] Sun, 22 January 2012 06:19 Go to previous message
Thomas 'PointedEars'  is currently offline  Thomas 'PointedEars'
Messages: 701
Registered: October 2010
Karma: 0
Senior Member
Erwin Moller wrote:

> On 1/18/2012 5:34 PM, Maximilian Koch wrote:
>> ich möchte aus einer CSV datei die inhalte auslesen, diese können sich
^^^^^^^^^^^
>> jedoch mal ändern in der reihenfolge. und es wird danach umständlich an
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>> mehreren orten im PHP Script die sache zu ändern..
>>
>> gäbe es nicht eine möglichkeit diese auszulegen..
>> […]
> [In English: I can read German a little, but not produce it.]
>
> You command:
> explode(";",$datenbank_temp);
> will explode on ;
>
> For example:
> $myPartsArray = explode(",","eins,zwei,drei");
>
> Now you have 3 elements in your array:
> $myPartsArray[0] <-- "eins"
> $myPartsArray[1] <-- "zwei"
> $myPartsArray[2] <-- "drei"
>
>
> Looking at your example you want to explode on "," and not on ";".
>
> Also: You use list(), which makes no sense like that.
> Explode() already returns an array, so you can just do:
>
> $dispoliste_datenstruktur = explode(",",$datenbank_temp);
>
> That way you'll have all in the array $dispoliste_datenstruktur.

That is correct, but beside the point, as the question was how to get rid of
the numeric indexes that are hard to maintain. The list() approach is
viable if list() is given more than one argument, one for each component of
the comma-separated value:

| > list($foo, $bar) = explode(',', 'baz,bla');
| > echo implode('#', array($foo, $bar));
| baz#bla

IOW, now $foo and $bar can be used in place of $dispoliste_datenstruktur[0]
and $dispoliste_datenstruktur[1], respectively. The drawback of this
approach is that all fields need to be present or a notice will be
generated:

$ php -a
Interactive mode enabled

<?php

list($foo, $bar) = explode(',', 'baz');
echo implode('#', array($foo, $bar));
PHP Notice: Undefined offset: 1 in - on line 3
PHP Stack trace:
PHP 1. {main}() -:0
baz#

Fortunately, list() appears to be ignoring too many elements RHS.

$ php -a
Interactive mode enabled

<?php

list($foo, $bar) = explode(',', 'foo,bar,baz');
echo implode('#', array($foo, $bar));
foo#bar

> In case I didn't answer your question at all, which is very possible,
> just ask again. :-)

You did not answer the question at all. I have marked the relevant part
that you overlooked.


PointedEars
--
Danny Goodman's books are out of date and teach practices that are
positively harmful for cross-browser scripting.
-- Richard Cornford, cljs, <cife6q$253$1$8300dec7(at)news(dot)demon(dot)co(dot)uk> (2004)
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: HTTP headers and header()
Next Topic: Loading globals into classes
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Sun Dec 01 00:23:49 GMT 2024

Total time taken to generate the page: 0.02341 seconds