Δημιουργία array από το μηδέν

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

Δημιουργία array από το μηδέν

Δημοσίευση από panos78 » 20 Φεβ 2006 03:20

Θέλω να δημιουργήσω ένα array από 100 τιμές που έχω.
Τις τιμές αυτές τις έχω μέσα σε αρχείο txt και κάθε τιμή είναι μια τιμή της array που θέλω να κάνω.
Σημείωση ότι το array to θέλω σαν μεταβλητή για να το χρησιμοποιήσω μέσα σε μια function.
Ελπίζω να υπάρχει τρόπος.
:)
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Άβαταρ μέλους
shadow
Script Master
Δημοσιεύσεις: 606
Εγγραφή: 14 Απρ 2005 18:30

Δημιουργία array από το μηδέν

Δημοσίευση από shadow » 20 Φεβ 2006 09:23

Εαν οι εγγραφές σου στο αρχείο είναι μια εγγραφή ανά γραμμή τότε μπορείς να χρησιμοποιήσεις την συνάρτηση file.
H file κολλάει και το newline (\n) στο τέλος κάθε στοιχείου του array, αλλά εκεί δεν είναι δύσκολο να το κάνεις drop :)

Εαν τώρα δεν είναι οι εγγραφές μια ανά γραμμή στο αρχείο , υποθέτω ότι οι εγγραφές θα διαχωρίζονται με κάποιο separator, οποτε χρησιμοποιώντας κάποια από τις συναρτήσεις για διάβασμα αρχείων (fread, file_get_contents, etc) διαβάζεις το αρχείο σε ένα string και στην συνέχεια κάνεις explode το separator που εχεις και το array σου είναι έτοιμο

Κώδικας: Επιλογή όλων

$separator = "something";
$str = file_get_contents($file_to_read);
$myarray = explode($separator , $str);
Close your eyes
For your eyes will only tell the truth and the truth isnt what you want to see
In the dark, is it easy to pretend that the truth is it ought to be.
Programmers are programmers because they like to code

Άβαταρ μέλους
greekbytes
WebDev Moderator
Δημοσιεύσεις: 2438
Εγγραφή: 15 Νοέμ 2002 15:42
Τοποθεσία: Αθήνα
Επικοινωνία:

Δημιουργία array από το μηδέν

Δημοσίευση από greekbytes » 20 Φεβ 2006 11:13

δες και αυτό το thread:
http://www.freestuff.gr/forums/viewtopic.php?t=20210

Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

Δημιουργία array από το μηδέν

Δημοσίευση από panos78 » 20 Φεβ 2006 12:25

Ευχαριστώ για τις απαντήσεις σας αλλά δεν ζήτησα ακριβώς αυτό.
Θα γίνω λίγο πιο αναλυτικός για να καταλάβετε τι θέλω.
Έχω ένα αρχείο κειμένου με την παρακάτω μορφή:

Κώδικας: Επιλογή όλων

|Τίτλος 1|Άρθρο 1|
|Τίτλος 2|Άρθρο 2|
|Τίτλος 3|Άρθρο 3|
|Τίτλος 4|Άρθρο 4|
|Τίτλος 5|Άρθρο 5|
|Τίτλος 6|Άρθρο 6|
|Τίτλος 7|Άρθρο 7|
......
Δημιουργησα ένα loop για να πάρω τους τίτλους της κάθε εγγραφής:

Κώδικας: Επιλογή όλων

$logfile ="arxeio.txt";
$file_line = file($logfile);
$total_lines = count($file_line);
for&#40;$i = 0; $i < $total_lines; $i++&#41;&#123; $line&#91;&#93; = $file_line&#91;$i&#93;; 
$line_array = explode&#40;"|",$line&#91;$i&#93;&#41;;
&#125;
&#125;

H μεταβλητή $line_array&#91;1&#93; είναι αυτή που με ενδιαφέρει.
Θέλω τώρα να δημιουργηθεί μέσω αυτού του loop ένα array όπου να είναι της μορφής:

Κώδικας: Επιλογή όλων

$titloi = array&#40;"Τίτλος 1","Τίτλος 2","Τίτλος 3","Τίτλος 4",.....&#41;;
Αφού γίνει αυτό θέλω να δημιουργήσω μια function όπως παρακάτω:

Κώδικας: Επιλογή όλων

function arthro&#40;$a&#41; &#123;
$b = "Άρθρο $a&#58;".$titloi&#91;$a&#93;;
return $b;
&#125;
Και μετά να γράφω π.χ.:

Κώδικας: Επιλογή όλων

echo arthro&#40;3&#41;;
και να μου δίνει&#58;
Άρθρο 3&#58; Τίτλος 3
Από τον υπάρχων κώδικα που παρέθεσα κάτι λείπει γιατί δεν μου εμφανίζει το Τίτλος 3 στο αποτέλεσμα.
Τι γράφω λάθος;
:)
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Άβαταρ μέλους
shadow
Script Master
Δημοσιεύσεις: 606
Εγγραφή: 14 Απρ 2005 18:30

Δημιουργία array από το μηδέν

Δημοσίευση από shadow » 20 Φεβ 2006 13:29

το πρώτο πράγμα που πρέπει να προσέξεις έχει σχέση με την εμβέλεια των συναρτήσεων. Στη συνάρτηση arthro χρησιμοποιείς το array titloi, το οποίο έχει αρχικοποιηθεί και χρησιμοποιείται έξω από την συνάρτηση. Αρα μέσα στο σώμα της συνάρτησης, το array ειναι undefined. Οπότε ή το δηλώνεις ως global μεσα στην συνάρτηση ή το περνάς στα ορίσματα της συνάρτησης.

Κώδικας: Επιλογή όλων

function arthro &#40;$var&#41;&#123;
     global $titloi;
     //rest of code
&#125;

function arthro &#40;$var , $titloi&#41;&#123;
     //rest of code
&#125;
Οταν θα καλέσεις τη παραπάνω συνάρτηση με πρώτη παράμετρο πχ το 3 θα σου επιστρέψει το 4 άρθρο δεδομένου ότι τα arrays αρχίζουν από το μηδέν.
Οποτε ή καλείς την συνάρτηση με κ-1 όταν θες τον κ τίτλο ή βάζεις σκουπίδια στην θέση 0 και γεμίζεις τις υπόλοιπες θέσεις με τα δεδομένα σου

Κώδικας: Επιλογή όλων

<?php
function arthro&#40;$a, $titles&#41; &#123;
        $b = "Άρθρο $a&#58;".$titles&#91;$a&#93;&#91;'titles'&#93;;
        return $b;
&#125;

function global_arthro&#40;$a&#41; &#123;
        global $titloi;
        $b = "Άρθρο $a&#58;".$titles&#91;$a&#93;&#91;'titles'&#93;;
        return $b;
&#125;


$logfile ="arxeio.txt";
$file_line = file&#40;$logfile&#41;;
$total_lines = count&#40;$file_line&#41;;
$titloi = array &#40;array&#40;'titles'=>'', 'articles'=>''&#41;&#41;; //σκουπιδια στη θεση 0 και αρχιζω να βαζω δεδομενα απο την θεση 1
for&#40;$i = 0; $i < $total_lines; $i++&#41;&#123;
        $line = explode&#40;"|",$file_line&#91;$i&#93;&#41;;
        $j = $i + 1;
        $titloi&#91;$j&#93;&#91;'titles'&#93; = $line&#91;1&#93;;
        $titloi&#91;$j&#93;&#91;'articles'&#93; = $line&#91;2&#93;;
&#125;

echo arthro&#40;3 , $titloi&#41;."\n"; //to titloi ws orisma
echo global_arthro&#40;3&#41;."\n"; //to titloi global
?>
Close your eyes
For your eyes will only tell the truth and the truth isnt what you want to see
In the dark, is it easy to pretend that the truth is it ought to be.
Programmers are programmers because they like to code

Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

Δημιουργία array από το μηδέν

Δημοσίευση από panos78 » 20 Φεβ 2006 14:51

Σε ευχαριστώ! :)
Προσάρμοσα τον κώδικα όπως τον ήθελα.
Τον παραθέτω σε περίπτωση που τον χρειαστεί κάποιος:

Κώδικας: Επιλογή όλων

function arthro&#40;$a&#41; &#123; global $titloi; 
$b = "<a href=\"#$a\" title=\"Άρθρο $a&#58; ".$titloi&#91;$a&#93;&#91;'titles'&#93;."\" onMouseOver=\"window.status='Άρθρο $a&#58; ".$titloi&#91;$a&#93;&#91;'titles'&#93;."'; return true;\" onMouseOut=\"window.status=''; return true;\">Άρθρο $a</a>";
return $b; &#125; 
$logfile ="arxeio.txt"; 
$file_line = file&#40;$logfile&#41;; 
$total_lines = count&#40;$file_line&#41;; 
$titloi = array &#40;array&#40;'titles'=>'', 'articles'=>''&#41;&#41;;
for&#40;$i = 0; $i < $total_lines; $i++&#41;&#123; 
$line_array = explode&#40;"|",$file_line&#91;$i&#93;&#41;; 
$j = $i + 1; 
$titloi&#91;$j&#93;&#91;'titles'&#93; = $line_array&#91;1&#93;; 
$titloi&#91;$j&#93;&#91;'articles'&#93; = $line_array&#91;2&#93;; 
&#125;
Τώρα να ρωτήσω κάτι ακόμα (ελπίζω να μην γίνομαι κουραστικός).
Αν θέλω να εισάγω αυτή τη συνάρτηση:
arthro($a) μέσα στο κείμενο που λαμβάνεται από το αρχείο κειμένου, π.χ.

Κώδικας: Επιλογή όλων

|Τίτλος 1|arthro&#40;3&#41;| 
|Τίτλος 2|Κείμενο ".arthro&#40;1&#41;." Κειμενο| 
|Τίτλος 3|Κείμενο ".arthro&#40;7&#41;." Κειμενο| 
|Τίτλος 4|Κείμενο ".arthro&#40;6&#41;." Κειμενο| 
|Τίτλος 5|Κείμενο ".arthro&#40;2&#41;." Κειμενο| 
|Τίτλος 6|Κείμενο ".arthro&#40;4&#41;." Κειμενο| 
|Τίτλος 7|Κείμενο ".arthro&#40;5&#41;." Κειμενο| 
...... 
είναι ο σωστός ή πρέπει να έχει άλλη σύνταξη;
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Άβαταρ μέλους
shadow
Script Master
Δημοσιεύσεις: 606
Εγγραφή: 14 Απρ 2005 18:30

Δημιουργία array από το μηδέν

Δημοσίευση από shadow » 21 Φεβ 2006 18:00

Δεν είμαι σίγουρη ότι κατάλαβα τι εννοείς...
εαν εννοείς ότι έχεις ενα string που περιέχει κάτι , και πας και του κολλάς κατευθείαν ότι σου επιστρέφει η συνάρτηση, χωρίς να αναθέσεις την τιμή που σου επιστρέφει η συνάρτηση σε μια καινούρια μεταβλητή, τοτε η συνταξή είναι σωστή
πχ

Κώδικας: Επιλογή όλων

$str = "lalakia" . artho&#40;2&#41; . "lalakia";
//ισοδυναμη σύνταξη
$temp = artho&#40;2&#41;;
$str="lalakia" . $temp . "lalakia";
Close your eyes
For your eyes will only tell the truth and the truth isnt what you want to see
In the dark, is it easy to pretend that the truth is it ought to be.
Programmers are programmers because they like to code

Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

Δημιουργία array από το μηδέν

Δημοσίευση από panos78 » 21 Φεβ 2006 18:21

Θα γίνω πιο αναλυτικός:
Έχω ένα κείμενο με άρθρα (γύρω στα 100).
Αυτό το κείμενο είναι γραμμένο μέσα σε ένα αρχείο κειμένου με όνομα arxeio.txt.
To αρχείο έχει τη μορφή όπως ανέφερα παραπάνω

Κώδικας: Επιλογή όλων

|Τίτλος 1|Άρθρο 1| 
|Τίτλος 2|Άρθρο 2| 
|Τίτλος 3|Άρθρο 3| 
|Τίτλος 4|Άρθρο 4| 
|Τίτλος 5|Άρθρο 5| 
|Τίτλος 6|Άρθρο 6| 
|Τίτλος 7|Άρθρο 7| 
...... 
Σε κάποια από τα άρθρα, μέσα στο κείμενο που περιέχουν, υπάρχουν παραπομπές σε άλλα άρθρα του ίδιου κειμένου, π.χ.:
Άρθρο 3: |Κείμενο Κείμενο Κείμενο Κείμενο Κείμενο (Παραπομπή για Άρθρο 7) Κείμενο Κείμενο Κείμενο Κείμενο Κείμενο|
Η function που μου είπες παραπάνω, δημιουργεί την παραπομπή.
Ωστόσο, θέλω αυτή η συνάρτηση να εφαρμοστεί, με κάποιο τρόπο στο κείμενο, πριν αυτό βγει στη σελίδα με τον κώδικα:

Κώδικας: Επιλογή όλων

$logfile ="arxeio.txt"; 
$file_line = file&#40;$logfile&#41;; 
$total_lines = count&#40;$file_line&#41;; 
for&#40;$ι = 0; $ι < $total_lines; $ι++&#41; &#123; 
$line_array = explode&#40;"|",$file_line&#91;$c&#93;&#41;;
echo "$line_array&#91;2&#93;";
&#125;
Για να εφαρμοστεί όμως πρέπει να του πω, με κάποιο τρόπο, τι να ψάξει μέσα στο κείμενο.
Εκείνο που δεν γνωρίζω είναι πως να εφαρμόσω την συνάρτηση μέσα στο κείμενο, ώστε να βρίσκει που είναι η παραπομπή και να την μετατρέπει σε αυτό που δίνει η συνάρτηση και μετά να το εμφανίζει στη σελίδα.
Γίνεται αυτό;
Και αν ναι πως;
:)
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης