/ / Php: מערך במערך. חפש במערך PHP

PHP: מערך במערך. חיפוש במערך PHP

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

Синтаксис стабилен, но меняется от версии к גרסאות ולא תמיד יכול להיות תואם אפילו מלמטה למעלה. ניידות התוכנית היא הישג נשכח היטב של המאה הקודמת. סמנטיקה מפתחת ויכולה להיות מיושמת לא רק בכל גרסה של שפה כלשהי; זה הפך להיות מסורת להשתמש במבנים תחביריים להביע כי הכללים של השפה אפילו לא היה מסופק. באמצעות דוגמה של מערכים, זה יכול להיות מובן ביותר.

מערך עיצוב

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

ציבורי $ aNone = מערך (); // המערך מתואר ואינו מכיל דבר

aFact = מערך ציבורי ("אבוקדו", "אפרסק", "דובדבן"); // ישנם שלושה אלמנטים במערך זה

יצירת מערך בתהליך בדיקת מצב:

$ cSrcLine = "שורה של נתונים מנותחים";

עבור ($ i = 0; $ i <13; $ i ++) {

$ cUserLine = inputUserLine (); // הזן משהו

if (checkFunc ($ cSrcLine, $ cUserLine) {

$aResult[] = "כן"; // הוסף למערך PHP

} אחרת {

$ aResult [] = "לא";

}

}

כתוצאה מביצוע דוגמה זו,מערך של 13 אלמנטים שערכיהם הם רק המחרוזת "כן" או "לא". אלמנטים יקבלו מדדים מ -0 ל -12. ניתן להשיג את אותה השפעה על ידי כתיבת תחילה של מערך ה- PHP "העתידי" למחרוזת:

$cFutureArray = "";

עבור ($ i = 0; $ i <13; $ i ++) {

$ cUserLine = inputUserLine (); // הזן משהו

if ($ i> 0) {$ cFutureArray. = "|"; }

if (checkFunc ($ cSrcLine, $ cUserLine) {$ cFutureArray. = "כן";

} else {$ cFutureArray. = "לא"; }

}

$ aResult = explode ("|", $ cFutureArray);

מערך php למחרוזת

מערכים רב מימדיים

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

מערך החזרה(

"view_manager" => array(41, "template_path_stack" => מערך( __DIR__ . "/../view", ),

"נתב" => array("routes" => array("sayhello" => מערך(

"type" => "ZendMvcRouterHttpLiteral",

"options" => array("route" => "/sayhello", "defaults" => מערך(

"בקר" => "HelloworldControllerIndex", "פעולה" => "אינדקס",))))))),

"בקרים" => array("invokables" => מערך(

"HelloworldControllerIndex" => "HelloworldControllerIndexController"))

);

זהו מערך PHP בתוך תרגול לדוגמה של מערך מ-ZF2. לא מאוד מעורר השראה בהתחלה, אבל זה עובד וכנראה הופך את המסגרת הזו למצליחה (דוגמה מ-ZendSkeletonApplication/module/Helloworld/config/module.config.php).

הסר אלמנט ממערך php

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

פשוט, נגיש ומובן

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

כלל לשליטה בסוגי משתנים אורעיונות משלו להפוך את הסמנטיקה לתחביר הם לעתים קרובות מותרות שלא משתלמת. זהו אובדן של מהירות סקריפט, קריאת קוד, ... כי פשטות בקידוד היא תמיד חיונית.

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

זה אופייני שכאשר הופיעו המערכים הראשונים,הוצעו גרסאות של נתונים בצורה של מבנים - ניסיון מגושם ליצור משהו מסוגי נתונים שונים. הראשון שרד ורכש תחביר יעיל חדש, השני נכנס להיסטוריה.

מערכים פשוטים ואסוציאטיביים

כתיבת מערך דו מימדי הוא זוג נוסףסוגריים "[" ו-"]", לדוגמה: $aSrcData[1][2] פירושו גישה לאלמנט [2] של מערך [1] הכלול במערך $aSrcData. ב-PHP אין חובה להצהיר על נתונים מראש. תמיד ניתן לבדוק את קיומו של כל מידע מוצהר.

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

$aAnketa["name"] = "איבנוב";
$aAnketa["age"] = 42;
$aAnketa["work"] = "במאי";
$aAnketa["פעיל"] = נכון;
$aTable[] = $aAnketa;

$aAnketa["name"] = "פטרוב";
$aAnketa["age"] = 34;
$aAnketa["work"] = "מנהל";
$aAnketa["פעיל"] = נכון;
$aTable[] = $aAnketa;

$aAnketa["name"] = "Afanasiev";
$aAnketa["age"] = 28;
$aAnketa["work"] = "עובד";
$aAnketa["active"] = false;
$aTable[] = $aAnketa;

$sOne .= implode ("; ", $aTable[1]) . "<br />"; // מערך PHP שני לתוך מחרוזת
$sOne .= $aTable[1]["work"]; // גישה לרכיב אחד של המערך השני

התוצאה של דוגמה זו (המערך הראשון נורמלי, המפתחות בו מתחילים מ-0, המערך השני הוא אסוציאטיבי, יש לו ארבעה מפתחות: "שם", "גיל", "עבודה", "פעיל"):

$sOne = "פטרוב; 34; מנהל; 1<br/>מנהל";

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

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

חפש במערך php

מפתחות לעבודה עם מערכים

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

$aLine["fruit"] = "כתום"; // כאן מפתח מערך PHP = "פרי"

או (כדי שהכל יהיה נכון, תוך כיבוד הקידוד של הדף והקוד):

$aLine[iconv ("utf-8", "CP1251", "פרי")] = iconv ("utf-8", "CP1251", "כתום");

בעת הוספת ערך חדש למערך $aLine:

$aLine[] = iconv("utf-8", "CP1251", "אפרסק");
$aLine[iconv ("utf-8", "CP1251", "ירקות")] = iconv ("utf-8", "CP1251", "מלפפון");
$aLine[] = iconv("utf-8", "CP1251", "חציל");

כתוצאה מהלולאה:

foreach ($aLine כ-$ck => $cv) {
$cOne .= $ck . "=" . $cv . "<br />";
}

יקבל:

פרי=תפוז
0=אפרסק
ירק=מלפפון
1=חציל

מפתח ה-PHP של המערך בעת הוספת האלמנטים "אפרסק" ו"חציל" נוצר ברצף מ-0, וכאשר אתה מציין את הערך שלו, הוא יהיה שווה לערך זה.

הסרת אלמנטים ממערך

מערך מחיקת php

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

אתה יכול לעשות את זה יותר קל. אם מיושמים על הדוגמה האחרונה:

unset($aLine[0]); // הסר אלמנט ממערך PHP

אז התוצאה תהיה:

פרי=תפוז
ירק=מלפפון
1=חציל

אפשרויות לתפעול רכיבי מערךניתן לבנות סט. לדוגמה, באמצעות הפונקציות: implode() ו- explode(), אתה יכול לכתוב מערך PHP לתוך מחרוזת עם מפריד אחד, ולנתח אותו בחזרה למערך אחר באמצעות מפריד אחר.

כדי פשוט למחוק את כל המערך ב-PHP, פשוט כתוב: unset($aLine);

זה מספיק.

חיפוש מערך

PHP מכיל פונקציות חיפוש מיוחדותarray_keys() , array_values() , array_key_exists() ו-in_array() , עם זאת, עליך לשקול לבצע חיפושי מערך PHP משלך לפני שתחליט להשתמש בהם.

מפתח מערך php

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

ב-PHP, ניתן לקרוא לפונקציות ששמם נקבע במהלך הפעלת התוכנית. דוגמה מעשית מאוד מספריית PHPWord, המאפשרת לך לקרוא וליצור מסמכי MS Word:

$elements = array("Text", "Inline", "TextRun", "Link", "PreserveText", "TextBreak",
"ListItem", "ListItemRun", "Table", "Image", "Object", "הערת שוליים",
"הערת סוף", "תיבת סימון", "תיבת טקסט", "שדה", "קו");

$functions = array();

עבור ($i = 0; $i < count($elements); $i++) {
$functions[$i] = "הוסף" . $elements[$i];
}

כתוצאה מכך, מערך $functions יקבל את הערכים של מערך $elements, כלומר, שמות של פונקציות אמיתיות שעובדות עם אלמנטים אמיתיים של המסמך.

על ידי קריאה לפונקציה $functions[4] ב-$elements[4], אתה יכול לקבל חיפוש מושלם ותוצאה מהירה.

מיון אלמנטים

המשימה של מיון הנתונים היא חיונית, וPHP מציעה מספר פונקציות לכך: sort(), rsort(), asort(), ksort(), ... אלמנטים עולים ויורדים, שתי הפונקציות השניות מאחסנות את הקשר בין מפתחות וערכים. לפעמים זה הגיוני לערבב ערכי מערך באופן אקראי - shuffle().

ערך php במערך

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

מערך php במערך

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

מערכי מחרוזות

הודות לפונקציות implode() ו- explode(), המערךניתן להמיר בקלות למחרוזת ולקבל בחזרה. זה מאפשר לך לאחסן נתונים בתצוגה קומפקטית ולהרחיב אותם למצב נוח לפי הצורך.

מערך שהומר למחרוזת פותח אפשרויות חדשות. לדוגמה, המשימה של חיפוש מילות מפתח בטקסט מחייבת את מה שנמצא לא יוסיף שוב.

$cSrcLine = "Text Text ListItemRun TextBox ListItem TextBox תיבת CheckBox TextBox הערת שוליים";

$aSrc = explode(" ", $cSrcLine);
$cDstLine = "";

עבור ($i=0; $i < count($aSrc); $i++) {
$cFind = "[" . $aSrc[$i] . "]";
if (! is_integer(strpos($cDstLine, $cFind))) {
$cDstLine .= $cFind;
}
}
$aDst = explode("][", $cDstLine);

$cOne = implode("; ", $aDst);

כתוצאה מכך, המשתנה $cOne יקבל רק את אותם ערכים ממחרוזת המקור המופיעים שם פעם אחת: "טקסט; ListItemRun; TextBox; ListItem; Check; Box; CheckBox; הערת שוליים".

השפה הרוסית במפתחות ובערכים

לא מומלץ להשתמש בכל דבר שקשורעם קידודים לאומיים, במבנים תחביריים. השפה הרוסית, כמו כל שאר השפות שהתווים שלהן חורגים מ-a-z, לא תיצור בעיות בהימצאות באזור הנתונים, אבל לא בתחביר הקוד. לפעמים אפילו משימת PHP פשוטה "פלט מערך למדפסת או מסך" תוביל ל"התפוררות", ולעתים קרובות יותר היא פשוט תעצור את הסקריפט.

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

תחביר PHP וסביבת שפה

זכור שתחביר PHP הוא דבר אחד, אבלהמבנים של התחביר הזה "עוסקים" ביישומים אחרים, עם מערכת ההפעלה, עם אפשרויות חומרה. יש הרבה אפשרויות, אף פעם אי אפשר לחזות הכל.

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