הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   php | explode מס' הנתונים (https://hosts.co.il/forums/showthread.php?t=62238)

Tomer 23-04-08 09:07

PHP קוד:

$vote "0;0;0;0";

$vote explode(";",$vote);

$vote[2] = "1";

$vote implode(";",$vote);

echo 
$vote// will be 0;0;1;0 

אולי ... זה יכול לעבוד .... רק תספור באיזה מקום נמצא c, אני מניח שע"י פיצול למערך וכו'

השאלה היא מה אתה צריך לעשות, אולי יש דרך יותר טובה.

Kfir.G,
תתחכם, זה בטח יעזור לך בחיים.

ASTeam 23-04-08 09:17

אני עושה סקר.
אני רוצה שהתשובות האפשריות יהיו ללא הגבלה.
לכן אני מציג את השאלות ע"פ לולאה, אחכ בעזרת קישור(או כל דבר אחר..לא משנה) מכניס לתא votes את מס' המבציעים באותה תבנית
ואז אני אציג
לתשובה 1 - ככה מצביעים וכד'(עם אחוזים כמובן)

וזה עבד מה שעשית..
אני אנסה להתשמש בזה..

השאלה היא, במצב של מס' נתונים לא מוגבל, כיצד אני הופך את התשובה להצבעה - כמו שאמרתי -

$answer = "a;b;c;d";
// אני רוצה שיהיה כך -
$vote = "0;0;0;0";

Tomer 23-04-08 09:25

תקרא על str_repeat, זה יוכל לעזור במקרה שלך (לפרק את answer, לעשות לו count, ועפ"י ה repeat ליצור את vote).

Kfir.G 23-04-08 10:32

ציטוט:

נכתב במקור על ידי ASTeam (פרסם 626865)
אבל אני לא יודע כמה נתונים יש לי..

נתתי את ארבע בתור דוגמה... במקום ארבע תחליף את ככה

PHP קוד:

$len count($arr);
for(
$i=0;$i<len;$i++) 


שים לב לשמור את הגודל של המערך במשתנה מחוץ ללואה! אחרת כל פעם שהלולאה תרוץ הפונקציה count תופעל ואין שום סיבה לכך...

ציטוט:

נכתב במקור על ידי ASTeam (פרסם 626870)
אני עושה סקר.
אני רוצה שהתשובות האפשריות יהיו ללא הגבלה.
לכן אני מציג את השאלות ע"פ לולאה, אחכ בעזרת קישור(או כל דבר אחר..לא משנה) מכניס לתא votes את מס' המבציעים באותה תבנית
ואז אני אציג
לתשובה 1 - ככה מצביעים וכד'(עם אחוזים כמובן)

וזה עבד מה שעשית..
אני אנסה להתשמש בזה..

השאלה היא, במצב של מס' נתונים לא מוגבל, כיצד אני הופך את התשובה להצבעה - כמו שאמרתי -

$answer = "a;b;c;d";
// אני רוצה שיהיה כך -
$vote = "0;0;0;0";

בוא נניח לרגע שיש לנו 3 תשובות אפשריות. התשובות האפשריות שלנו הם: a,b,c.
עכשיו נכניס את זה למשתנה answer שרצית (תלוי בשליפה שלך לכן אני לא אפרט את זה בקוד).
עכשיו יש לנו את answer עם התשובות האפשריות במבנה שרצית
PHP קוד:

$answer="a;b;c"

עכשיו נפצל את answer בעזרת הפונקציה explode, ונשמור את התוצאה.
PHP קוד:

$arr=explode(';',$answer); 

עכשיו נבדוק איזה תשובה הוכנסה ונקח את התווית שלה (key). נניח שהתשובה שמורה במשתנה vote.
PHP קוד:

$key array_search($vote,$arr); 

עכשיו נכניס למשתנה votes את מה שאנחנו צריכים בעזרת לולאה
PHP קוד:

$len count($arr);
for(
$i=0;$i<$len;$i++)
{
if(
$i!=0$votes .= ";";
if(
$i==$key$votes .= "1";
else 
$votes.="0";


אם אתה צריך אפשרויות יותר מ0 ו1 (יותר מהצבעה אחת למשל) מה שתעשה זה ליצור מערך נוסף וכל פעם שהתשובה שווה למשתנה i תגדיל אותו באחד.
זהו ההסבר הזה אמור להספיק לדעתי :)


ציטוט:

נכתב במקור על ידי Tomer (פרסם 626867)
Kfir.G,
תתחכם, זה בטח יעזור לך בחיים.

מה בדיוק אתה רוצה ממני אני יכול להבין? אתה אמרת לפותח האשכול לעשות משהו שהוא לא חובה וגם לא הסברת לו באמת למה ככה שנראה לי הולם שהסברתי לו...

ASTeam 23-04-08 11:40

תודה קפיר
עשיתי כמו שתומר אמר הקוד -
PHP קוד:

$vid intval($_GET['vid]);'
$vote $idw['votes']; // 0;0;0 - מהמסד
$vote explode(";",$vote); // מחלק לכל הנתונים.
$vote[$vid] = $vote[$vid] + 1;// מחפש את המס' של ההצבעה, מוסיף אחד.
$vote implode(";",$vote);// מכניס הכל 

תודה כולם!

Tomer 23-04-08 11:50

ציטוט:

נכתב במקור על ידי Kfir.G (פרסם 626881)
מה בדיוק אתה רוצה ממני אני יכול להבין? אתה אמרת לפותח האשכול לעשות משהו שהוא לא חובה וגם לא הסברת לו באמת למה ככה שנראה לי הולם שהסברתי לו...

לא רוצה ממך כלום,
הסברתי לו שהמערך מתחיל מ 0 - ובמקום לשנות את ה for (במידה והוא משתמש בזה בכלל) שיתחיל מ- 1 (כאשר אני יודע שהרוב מתחילים מ- 0) פשוט להחסיר 1 מהתוצאה של count.

אתם באמת אוהבים להתווכח, או שלפעמים אנשים כאן אשכרה קוראים את התגובות?

Daniel 23-04-08 12:28

במקרה הזה(ורק במקרה הזה =) ), Tomer צודק. ב-PHP, לרוב הספירה מתחיל ב-0, וזה כולל מערכים.
במידה ותעשה print_r(explode(X, Y));
זה יתחיל את הספירה מ-0

BlueNosE 23-04-08 18:38

ציטוט:

נכתב במקור על ידי Tomer (פרסם 626789)
count($answer) - 1

תומר, זה לא נכון. השימוש בפונקציה COUNT מחזיר בדיוק את מה שאנחנו צריכים - את הכמות של האיברים במערך.

PHP קוד:

$var = Array ('one''two''three''four');
echo 
count ($var); // output: "4" 

אתה מוזמן לבדוק.


עריכה:
הכוונה שלי היא, שהוא לא אמר שהוא רוצה לקרוא את האיבר האחרון במערך. הוא בסה"כ רצה לדעת מה הכמות של האיברים.
במקרה שהוא רצה את האיבר האחרון, אפשר גם להשתמש ב-end.

Tomer 23-04-08 18:45

ציטוט:

נכתב במקור על ידי BlueNosE (פרסם 627065)
תומר, זה לא נכון. השימוש בפונקציה COUNT מחזיר בדיוק את מה שאנחנו צריכים - את הכמות של האיברים במערך.

PHP קוד:

$var = Array ('one''two''three''four');
echo 
count ($var); // output: "4" 

אתה מוזמן לבדוק.


עריכה:
הכוונה שלי היא, שהוא לא אמר שהוא רוצה לקרוא את האיבר האחרון במערך. הוא בסה"כ רצה לדעת מה הכמות של האיברים.
במקרה שהוא רצה את האיבר האחרון, אפשר גם להשתמש ב-end.

עומר,
זה לא נכון. כשאתה מכניס את count($x) לתוך לולאת for שרצה כ-

PHP קוד:

for ($x=0$x<=count($y); $x++) 

אתה תתחיל מ 0 עד 4 - אתה צריך מ 0 עד 3 - משמע 4 איברים.

0 1 2 3
לעומת
0 1 2 3 4

לבדוק את עצמך פעם הבאה.

sagi_b 24-04-08 09:54

ציטוט:

נכתב במקור על ידי Tomer (פרסם 627068)
עומר,
זה לא נכון. כשאתה מכניס את count($x) לתוך לולאת for שרצה כ-

PHP קוד:

for ($x=0$x<=count($y); $x++) 

לבדוק את עצמך פעם הבאה.

זה בגלל תנאי השוויון שלך. x קטן או שווה ל-count אך במקרה הזה אתה רוצה לבדוק רק אם הוא קטן יותר:
PHP קוד:

for ($x=0$x<count($y); $x++) 

כמובן שאפשר להשוות ל-count-1 במקום אך זה מסורבל יותר ופחות נפוץ.

ובכלל בדוגמה הזו עדיף להשתמש ב-foreach:
PHP קוד:

foreach ($answers as $answerdosmth($answer); 



כל הזמנים הם GMT +2. הזמן כעת הוא 14:31.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ