dnrops.gitlink.net/posts/php/php_cheatsheet.html

938 lines
59 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE HTML>
<html lang="en" class="coal" dir="ltr">
<head>
<!-- Book generated using mdBook -->
<meta charset="UTF-8">
<title>PHP cheatsheet - Andrew&#x27;s Blog</title>
<!-- Custom HTML head -->
<meta name="description" content="Andrew Ryan&#x27;s Blog">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#ffffff">
<link rel="icon" href="../../favicon.svg">
<link rel="shortcut icon" href="../../favicon.png">
<link rel="stylesheet" href="../../css/variables.css">
<link rel="stylesheet" href="../../css/general.css">
<link rel="stylesheet" href="../../css/chrome.css">
<!-- Fonts -->
<link rel="stylesheet" href="../../FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../../fonts/fonts.css">
<!-- Highlight.js Stylesheets -->
<link rel="stylesheet" href="../../highlight.css">
<link rel="stylesheet" href="../../tomorrow-night.css">
<link rel="stylesheet" href="../../ayu-highlight.css">
<!-- Custom theme stylesheets -->
<link rel="stylesheet" href="../../src/style/custom.css">
<!-- MathJax -->
<script async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
</head>
<body class="sidebar-visible no-js">
<div id="body-container">
<!-- Provide site root to javascript -->
<script>
var path_to_root = "../../";
var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "coal" : "coal";
</script>
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script>
try {
var theme = localStorage.getItem('mdbook-theme');
var sidebar = localStorage.getItem('mdbook-sidebar');
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
}
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
} catch (e) { }
</script>
<!-- Set the theme before any content is loaded, prevents flash -->
<script>
var theme;
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
if (theme === null || theme === undefined) { theme = default_theme; }
var html = document.querySelector('html');
html.classList.remove('coal')
html.classList.add(theme);
var body = document.querySelector('body');
body.classList.remove('no-js')
body.classList.add('js');
</script>
<input type="checkbox" id="sidebar-toggle-anchor" class="hidden">
<!-- Hide / unhide sidebar before it is displayed -->
<script>
var body = document.querySelector('body');
var sidebar = null;
var sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
} else {
sidebar = 'hidden';
}
sidebar_toggle.checked = sidebar === 'visible';
body.classList.remove('sidebar-visible');
body.classList.add("sidebar-" + sidebar);
</script>
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
<div class="sidebar-scrollbox">
<ol class="chapter"><li class="chapter-item affix "><a href="../../index.html">Andrew's Blog</a></li><li class="chapter-item "><a href="../../posts/linux/linux.html"><strong aria-hidden="true">1.</strong> linux</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../posts/linux/install_linux.html"><strong aria-hidden="true">1.1.</strong> install linux</a></li><li class="chapter-item "><a href="../../posts/linux/bash_profile.html"><strong aria-hidden="true">1.2.</strong> bash profile</a></li><li class="chapter-item "><a href="../../posts/linux/command_list.html"><strong aria-hidden="true">1.3.</strong> command list</a></li><li class="chapter-item "><a href="../../posts/linux/git_guide.html"><strong aria-hidden="true">1.4.</strong> git guide</a></li><li class="chapter-item "><a href="../../posts/linux/tar.html"><strong aria-hidden="true">1.5.</strong> tar</a></li><li class="chapter-item "><a href="../../posts/linux/run_x86_elf_in_x64_setup.html"><strong aria-hidden="true">1.6.</strong> run x86 elf in x64 setup</a></li></ol></li><li class="chapter-item "><a href="../../posts/mac/mac.html"><strong aria-hidden="true">2.</strong> mac</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../posts/mac/macos_profiles.html"><strong aria-hidden="true">2.1.</strong> macos profiles</a></li></ol></li><li class="chapter-item "><a href="../../posts/swift/swift.html"><strong aria-hidden="true">3.</strong> swift</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../posts/swift/learn_swift.html"><strong aria-hidden="true">3.1.</strong> learn swift basics</a></li><li class="chapter-item "><a href="../../posts/swift/swift_extensions.html"><strong aria-hidden="true">3.2.</strong> Swift extensions</a></li><li class="chapter-item "><a href="../../posts/swift/swiftui_extension.html"><strong aria-hidden="true">3.3.</strong> SwiftUI extensions</a></li><li class="chapter-item "><a href="../../posts/swift/install_swift.html"><strong aria-hidden="true">3.4.</strong> install swift</a></li><li class="chapter-item "><a href="../../posts/swift/task_planner.html"><strong aria-hidden="true">3.5.</strong> implment task panner app with SwiftUI</a></li><li class="chapter-item "><a href="../../posts/swift/swift_cheat_sheet.html"><strong aria-hidden="true">3.6.</strong> Swift Cheat Sheet</a></li><li class="chapter-item "><a href="../../posts/swift/yinci_url.html"><strong aria-hidden="true">3.7.</strong> Personal privacy protocol</a></li><li class="chapter-item "><a href="../../posts/swift/swift_regular_exressions.html"><strong aria-hidden="true">3.8.</strong> Swift regular exressions</a></li><li class="chapter-item "><a href="../../posts/ios/how_to_create_beautiful_ios_charts_in_swift.html"><strong aria-hidden="true">3.9.</strong> How to Create Beautiful iOS Charts in鑱絊wift</a></li><li class="chapter-item "><a href="../../posts/swift/swiftui_source_code.html"><strong aria-hidden="true">3.10.</strong> SwiftUI source code</a></li><li class="chapter-item "><a href="../../posts/swift/use_swift_fetch_iciba_api.html"><strong aria-hidden="true">3.11.</strong> use swift fetch iciba API</a></li></ol></li><li class="chapter-item "><a href="../../posts/ios/ios.html"><strong aria-hidden="true">4.</strong> ios</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../posts/ios/cocaposd_setup_and_install_for_ios_project.html"><strong aria-hidden="true">4.1.</strong> cocaposd setup and install for ios project</a></li><li class="chapter-item "><a href="../../posts/ios/swiftui_show_gif_image.html"><strong aria-hidden="true">4.2.</strong> SwiftUI show gif image</a></li><li class="chapter-item "><a href="../../posts/ios/implement_task_planner_app.html"><strong aria-hidden="true">4.3.</strong> implement Task planner App</a></li></ol></li><li class="chapter-item "><a href="../../posts/objective_c/objective_c.html"><strong aria-hidden="true">5.</strong> objective_c</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../posts/objective_c/objective_c_cheat_sheet.html"><strong aria-hidden="true">5.1.</strong> Objective-C Cheat Sheet</a></li><li class="chapter-item "><a href="../../posts/objective_c/objective_c_for_absolute_beginners_read_note.html"><strong aria-hidden="true">5.2.</strong> Objective-C Note</a></li></ol></li><li class="chapter-item "><a href="../../posts/dart/dart.html"><strong aria-hidden="true">6.</strong> dart</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../posts/dart/flutter.html"><strong aria-hidden="true">6.1.</strong> Flutter Cheat Sheet</a></li><li class="chapter-item "><a href="../../posts/dart/dart_cheat_sheet.html"><strong aria-hidden="true">6.2.</strong> Dart Cheat Sheet</a></li><li class="chapter-item "><a href="../../posts/flutter/flutter_dev_test.html"><strong aria-hidden="true">6.3.</strong> Flutter dev test</a></li></ol></li><li class="chapter-item "><a href="../../posts/rust/rust.html"><strong aria-hidden="true">7.</strong> rust</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../posts/rust/offline_use_rust.html"><strong aria-hidden="true">7.1.</strong> Offline use rust</a></li><li class="chapter-item "><a href="../../posts/rust/rust_grammer.html"><strong aria-hidden="true">7.2.</strong> rust grammar</a></li><li class="chapter-item "><a href="../../posts/rust/pase_string_and_decimal_conversion.html"><strong aria-hidden="true">7.3.</strong> pase string and decimal conversion</a></li><li class="chapter-item "><a href="../../posts/rust/parse_types.html"><strong aria-hidden="true">7.4.</strong> rust types</a></li><li class="chapter-item "><a href="../../posts/rust/rust_life_cycle.html"><strong aria-hidden="true">7.5.</strong> Rust life cycle</a></li><li class="chapter-item "><a href="../../posts/rust/rust_generic.html"><strong aria-hidden="true">7.6.</strong> rust generics</a></li><li class="chapter-item "><a href="../../posts/rust/rust_implment_matrix.html"><strong aria-hidden="true">7.7.</strong> Rust implement matrix</a></li><li class="chapter-item "><a href="../../posts/rust/rust_sort.html"><strong aria-hidden="true">7.8.</strong> Rust implement sort algorithms</a></li><li class="chapter-item "><a href="../../posts/rust/implement_aes_encryption.html"><strong aria-hidden="true">7.9.</strong> Rust implement AEC encryption and decryption</a></li><li class="chapter-item "><a href="../../posts/rust/implement_trie_data_structure.html"><strong aria-hidden="true">7.10.</strong> implement trie data structure</a></li><li class="chapter-item "><a href="../../posts/rust/rust_implement_tree.html"><strong aria-hidden="true">7.11.</strong> implement tree data_structure</a></li><li class="chapter-item "><a href="../../posts/rust/list_dir.html"><strong aria-hidden="true">7.12.</strong> list dir</a></li><li class="chapter-item "><a href="../../posts/rust/fast_way_to_implment_object_trait.html"><strong aria-hidden="true">7.13.</strong> fast way to implment object trait</a></li><li class="chapter-item "><a href="../../posts/rust/compress_rust_binary_size.html"><strong aria-hidden="true">7.14.</strong> compress rust binary size</a></li><li class="chapter-item "><a href="../../posts/rust/implment_file_upload_backend.html"><strong aria-hidden="true">7.15.</strong> impliment file upload</a></li><li class="chapter-item "><a href="../../posts/rust/this_is_add_post_cli_implementation_in_rust.html"><strong aria-hidden="true">7.16.</strong> this is add_post cli implementation in rust</a></li><li class="chapter-item "><a href="../../posts/rust/use_rust_implment_a_copyclipbord_cli.html"><strong aria-hidden="true">7.17.</strong> Use rust implment a copyclipbord CLI</a></li><li class="chapter-item "><a href="../../posts/rust/sqlite_database_add_delete_update_show_in_rust.html"><strong aria-hidden="true">7.18.</strong> sqlite database add delete update show in rust</a></li><li class="chapter-item "><a href="../../posts/rust/implementing_tokio_joinhandle_for_wasm.html"><strong aria-hidden="true">7.19.</strong> Implementing tokio JoinHandle for wasm</a></li><li class="chapter-item "><a href="../../posts/rust/rust_implement_a_crate_for_encode_and_decode_brainfuck_and_ook.html"><strong aria-hidden="true">7.20.</strong> rust implement a crate for encode and decode brainfuck and ook</a></li><li class="chapter-item "><a href="../../posts/rust/slint_builtin_elements.html"><strong aria-hidden="true">7.21.</strong> Slint Builtin Elements</a></li><li class="chapter-item "><a href="../../posts/rust/corporate_network_install_rust_on_windows.html"><strong aria-hidden="true">7.22.</strong> Corporate network install Rust on windows</a></li><li class="chapter-item "><a href="../../posts/rust/rust_binary_file_how_to_judge_static_link_or_dynamic_link_in_macos.html"><strong aria-hidden="true">7.23.</strong> rust binary file how to judge static link or dynamic link in Macos</a></li><li class="chapter-item "><a href="../../posts/rust/rust_binary_include_dir_and_get_contents.html"><strong aria-hidden="true">7.24.</strong> rust binary include dir and get contents</a></li><li class="chapter-item "><a href="../../posts/rust/rust_logger_non-block.html"><strong aria-hidden="true">7.25.</strong> rust logger non-block</a></li><li class="chapter-item "><a href="../../posts/rust/rust_connect_sql_server_database.html"><strong aria-hidden="true">7.26.</strong> rust connect sql server database</a></li><li class="chapter-item "><a href="../../posts/rust/rust_websocket_implment.html"><strong aria-hidden="true">7.27.</strong> rust websocket implment</a></li></ol></li><li class="chapter-item "><a href="../../posts/java/java.html"><strong aria-hidden="true">8.</strong> java</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../posts/java/java_grammar.html"><strong aria-hidden="true">8.1.</strong> java grammar and codewar</a></li><li class="chapter-item "><a href="../../posts/java/run_jar.html"><strong aria-hidden="true">8.2.</strong> java run .jar</a></li><li class="chapter-item "><a href="../../posts/java/java_pomxml_add_defaultgoal_to_build.html"><strong aria-hidden="true">8.3.</strong> Java pomxml add defaultGoal to build</a></li><li class="chapter-item "><a href="../../posts/java/java_set_mvn_mirror.html"><strong aria-hidden="true">8.4.</strong> Java set mvn mirror</a></li></ol></li><li class="chapter-item "><a href="../../posts/python/python.html"><strong aria-hidden="true">9.</strong> python</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../posts/python/convert_pesn.html"><strong aria-hidden="true">9.1.</strong> convert pesn</a></li><li class="chapter-item "><a href="../../posts/python/find_remove_dir.html"><strong aria-hidden="true">9.2.</strong> find and remove dir</a></li><li class="chapter-item "><a href="../../posts/python/timing_message.html"><strong aria-hidden="true">9.3.</strong> wechat send message</a></li><li class="chapter-item "><a href="../../posts/python/use_python_openpyxl_package_read_and_edit_excel_files.html"><strong aria-hidden="true">9.4.</strong> Use python openpyxl package read and edit excel files</a></li></ol></li><li class="chapter-item "><a href="../../posts/go/go.html"><strong aria-hidden="true">10.</strong> go</a></li><li class="chapter-item "><a href="../../posts/js/js.html"><strong aria-hidden="true">11.</strong> js</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../posts/js/js_tutorial.html"><strong aria-hidden="true">11.1.</strong> js tutorial</a></li><li class="chapter-item "><a href="../../posts/js/js_tutorial_map.html"><strong aria-hidden="true">11.2.</strong> ja map</a></li><li class="chapter-item "><a href="../../posts/js/js_tutorial_math.html"><strong aria-hidden="true">11.3.</strong> js math</a></li><li class="chapter-item "><a href="../../posts/js/js_tutorial_object.html"><strong aria-hidden="true">11.4.</strong> js object</a></li><li class="chapter-item "><a href="../../posts/js/js_tutorial_set.html"><strong aria-hidden="true">11.5.</strong> js set</a></li><li class="chapter-item "><a href="../../posts/js/single_thread_and_asynchronous.html"><strong aria-hidden="true">11.6.</strong> single thread and asynchronous</a></li><li class="chapter-item "><a href="../../posts/js/this.html"><strong aria-hidden="true">11.7.</strong> js this</a></li><li class="chapter-item "><a href="../../posts/js/js_implment_aes.html"><strong aria-hidden="true">11.8.</strong> js implment aes</a></li><li class="chapter-item "><a href="../../posts/js/getting_started_with_ajax.html"><strong aria-hidden="true">11.9.</strong> getting started with ajax</a></li><li class="chapter-item "><a href="../../posts/js/BinarySearchTree.html"><strong aria-hidden="true">11.10.</strong> binary search tree</a></li><li class="chapter-item "><a href="../../posts/js/goole_zx.html"><strong aria-hidden="true">11.11.</strong> goole zx</a></li><li class="chapter-item "><a href="../../posts/js/es6.html"><strong aria-hidden="true">11.12.</strong> es6</a></li></ol></li><li class="chapter-item "><a href="../../posts/ruby/ruby.html"><strong aria-hidden="true">12.</strong> ruby</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../posts/ruby/rails_setup_env.html"><strong aria-hidden="true">12.1.</strong> ruby on rails setup environment</a></li><li class="chapter-item "><a href="../../posts/ruby/learn_ruby.html"><strong aria-hidden="true">12.2.</strong> learn ruby</a></li><li class="chapter-item "><a href="../../posts/ruby/ruby_note.html"><strong aria-hidden="true">12.3.</strong> Ruby Note</a></li><li class="chapter-item "><a href="../../posts/ruby/setup_ruby_for_ctf.html"><strong aria-hidden="true">12.4.</strong> Setup ruby for CTF</a></li></ol></li><li class="chapter-item "><a href="../../posts/react/react.html"><strong aria-hidden="true">13.</strong> react</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../posts/react/react_life_cycle.html"><strong aria-hidden="true">13.1.</strong> react life cycle</a></li><li class="chapter-item "><a href="../../posts/react/react_router.html"><strong aria-hidden="true">13.2.</strong> react router</a></li><li class="chapter-item "><a href="../../posts/react/react_this.html"><strong aria-hidden="true">13.3.</strong> react this</a></li><li class="chapter-item "><a href="../../posts/react/react_interviw.html"><strong aria-hidden="true">13.4.</strong> react interview</a></li><li class="chapter-item "><a href="../../posts/react/important_react_interview.html"><strong aria-hidden="true">13.5.</strong> important react interview</a></li><li class="chapter-item "><a href="../../posts/react/react_quick_reference.html"><strong aria-hidden="true">13.6.</strong> react quick reference</a></li><li class="chapter-item "><a href="../../posts/react/redux_quick_reference.html"><strong aria-hidden="true">13.7.</strong> redux quick reference</a></li></ol></li><li class="chapter-item "><a href="../../posts/vue/vue.html"><strong aria-hidden="true">14.</strong> vue</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../posts/vue/vue_ajax.html"><strong aria-hidden="true">14.1.</strong> vue ajax</a></li></ol></li><li class="chapter-item "><a href="../../posts/angular/angular.html"><strong aria-hidden="true">15.</strong> angular</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../posts/angular/controller_communication.html"><strong aria-hidden="true">15.1.</strong> controller communication</a></li><li class="chapter-item "><a href="../../posts/angular/creating_custom_directives.html"><strong aria-hidden="true">15.2.</strong> creating custom directives</a></li><li class="chapter-item "><a href="../../posts/angular/directive_notes.html"><strong aria-hidden="true">15.3.</strong> directive notes</a></li><li class="chapter-item "><a href="../../posts/angular/directive_communication.html"><strong aria-hidden="true">15.4.</strong> directive communication</a></li><li class="chapter-item "><a href="../../posts/angular/post_params.html"><strong aria-hidden="true">15.5.</strong> post params</a></li><li class="chapter-item "><a href="../../posts/angular/read_json_angular.html"><strong aria-hidden="true">15.6.</strong> read json angular</a></li><li class="chapter-item "><a href="../../posts/angular/same_route_reload.html"><strong aria-hidden="true">15.7.</strong> same route reload</a></li></ol></li><li class="chapter-item "><a href="../../posts/css/css.html"><strong aria-hidden="true">16.</strong> css</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../posts/css/use_css_media.html"><strong aria-hidden="true">16.1.</strong> use css media</a></li></ol></li><li class="chapter-item expanded "><a href="../../posts/php/php.html"><strong aria-hidden="true">17.</strong> php</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../posts/php/for_php_string_implment_some_extemtion_functions.html"><strong aria-hidden="true">17.1.</strong> for php string implment some extemtion functions</a></li><li class="chapter-item expanded "><a href="../../posts/php/php_cheatsheet.html" class="active"><strong aria-hidden="true">17.2.</strong> PHP cheatsheet</a></li></ol></li><li class="chapter-item "><a href="../../posts/leetcode/leetcode.html"><strong aria-hidden="true">18.</strong> leetcode</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../posts/leetcode/rust_leetcode.html"><strong aria-hidden="true">18.1.</strong> rust leetcode</a></li><li class="chapter-item "><a href="../../posts/leetcode/rust_codewar.html"><strong aria-hidden="true">18.2.</strong> rust codewar</a></li><li class="chapter-item "><a href="../../posts/leetcode/swift_codewar.html"><strong aria-hidden="true">18.3.</strong> swift codewar</a></li><li class="chapter-item "><a href="../../posts/leetcode/js_leetcode.html"><strong aria-hidden="true">18.4.</strong> js leetcode</a></li><li class="chapter-item "><a href="../../posts/leetcode/java_leetcode.html"><strong aria-hidden="true">18.5.</strong> java leetcode</a></li><li class="chapter-item "><a href="../../posts/leetcode/rust_huawei.html"><strong aria-hidden="true">18.6.</strong> huawei test</a></li><li class="chapter-item "><a href="../../posts/leetcode/rust_utils.html"><strong aria-hidden="true">18.7.</strong> rust common functions</a></li><li class="chapter-item "><a href="../../posts/leetcode/olympiad_training.html"><strong aria-hidden="true">18.8.</strong> Computer olympiad training</a></li></ol></li><li class="chapter-item "><a href="../../posts/ctf/CTF.html"><strong aria-hidden="true">19.</strong> ctf</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../posts/ctf/CTF_Note.html"><strong aria-hidden="true">19.1.</strong> CTF Note</a></li><li class="chapter-item "><a href="../../posts/ctf/0.1_Web.html"><strong aria-hidden="true">19.2.</strong> Web</a></li><li class="chapter-item "><a href="../../posts/ctf/4.1_Misc.html"><strong aria-hidden="true">19.3.</strong> Misc</a></li><li class="chapter-item "><a href="../../posts/ctf/3.2_PWN_note.html"><strong aria-hidden="true">19.4.</strong> PWN</a></li><li class="chapter-item "><a href="../../posts/ctf/3.1_Crypto.html"><strong aria-hidden="true">19.5.</strong> Crypto</a></li><li class="chapter-item "><a href="../../posts/ctf/3.4_RSA_note.html"><strong aria-hidden="true">19.6.</strong> Rsa attack</a></li><li class="chapter-item "><a href="../../posts/ctf/3.5_Base64.html"><strong aria-hidden="true">19.7.</strong> Base64</a></li><li class="chapter-item "><a href="../../posts/ctf/0.0_SQL Injection Cheatsheet.html"><strong aria-hidden="true">19.8.</strong> SQL Injection Cheatsheet</a></li><li class="chapter-item "><a href="../../posts/ctf/1.1_SQL_injection.html"><strong aria-hidden="true">19.9.</strong> SQL Injection</a></li><li class="chapter-item "><a href="../../posts/ctf/1.2_SQL_injection_UNION_attacks.html"><strong aria-hidden="true">19.10.</strong> SQL Injection UNION attacks</a></li><li class="chapter-item "><a href="../../posts/ctf/1.3_Blind SQL injection.html"><strong aria-hidden="true">19.11.</strong> Blind SQL Injection</a></li><li class="chapter-item "><a href="../../posts/ctf/1.4_Code Injection.html"><strong aria-hidden="true">19.12.</strong> Code Injection</a></li><li class="chapter-item "><a href="../../posts/ctf/1.5_SSRF.html"><strong aria-hidden="true">19.13.</strong> SSRF</a></li><li class="chapter-item "><a href="../../posts/ctf/1.6_OS command injection.html"><strong aria-hidden="true">19.14.</strong> OS command injection</a></li><li class="chapter-item "><a href="../../posts/ctf/1.7_Local file inclusion.html"><strong aria-hidden="true">19.15.</strong> Local file inclusion</a></li><li class="chapter-item "><a href="../../posts/ctf/1.8_Remote file inclusion.html"><strong aria-hidden="true">19.16.</strong> Remote file inclusion</a></li><li class="chapter-item "><a href="../../posts/ctf/1.9_CSRFm.html"><strong aria-hidden="true">19.17.</strong> CSRF</a></li><li class="chapter-item "><a href="../../posts/ctf/1.10_NoSQL injection.html"><strong aria-hidden="true">19.18.</strong> NoSQL injection</a></li><li class="chapter-item "><a href="../../posts/ctf/1.11_JSON injection.html"><strong aria-hidden="true">19.19.</strong> JSON injection</a></li><li class="chapter-item "><a href="../../posts/ctf/1.12_CTF_Web_SQL_Note.html"><strong aria-hidden="true">19.20.</strong> CTF Web SQL Note</a></li><li class="chapter-item "><a href="../../posts/ctf/2.1_XXE.html"><strong aria-hidden="true">19.21.</strong> XXE</a></li><li class="chapter-item "><a href="../../posts/ctf/2.2_XSS.html"><strong aria-hidden="true">19.22.</strong> XSS</a></li><li class="chapter-item "><a href="../../posts/ctf/2.3_Upload File.html"><strong aria-hidden="true">19.23.</strong> Upload File</a></li><li class="chapter-item "><a href="../../posts/ctf/2.4_serialize_unserialize.html"><strong aria-hidden="true">19.24.</strong> serialize unserialize</a></li><li class="chapter-item "><a href="../../posts/ctf/2.5_Race condition.html"><strong aria-hidden="true">19.25.</strong> Race condition</a></li><li class="chapter-item "><a href="../../posts/ctf/3.2_PWN_note.html"><strong aria-hidden="true">19.26.</strong> PWN_note</a></li><li class="chapter-item "><a href="../../posts/ctf/3.3_pwn HCTF2016 brop.html"><strong aria-hidden="true">19.27.</strong> pwn HCTF2016 brop</a></li><li class="chapter-item "><a href="../../posts/ctf/pwn_patch_defense_skill.html"><strong aria-hidden="true">19.28.</strong> PWN Patch defense skill</a></li><li class="chapter-item "><a href="../../posts/ctf/pwn_stack_overflow.html"><strong aria-hidden="true">19.29.</strong> PWN stack overflow</a></li><li class="chapter-item "><a href="../../posts/ctf/pwn_heap_overflow.html"><strong aria-hidden="true">19.30.</strong> PWN heap overflow</a></li><li class="chapter-item "><a href="../../posts/ctf/pwn_format_string_vulnerability.html"><strong aria-hidden="true">19.31.</strong> PWN Format String Vulnerability</a></li><li class="chapter-item "><a href="../../posts/ctf/kali_linux_tutorials.html"><strong aria-hidden="true">19.32.</strong> Kali linux tutorials</a></li><li class="chapter-item "><a href="../../posts/ctf/google_dorks_2023_lists.html"><strong aria-hidden="true">19.33.</strong> Google Dorks 2023 Lists</a></li><li class="chapter-item "><a href="../../posts/ctf/dvwa_writeup.html"><strong aria-hidden="true">19.34.</strong> DVWA WriteUp</a></li><li class="chapter-item "><a href="../../posts/ctf/bwapp_writeup.html"><strong aria-hidden="true">19.35.</strong> bWAPP WriteUp</a></li><li class="chapter-item "><a href="../../posts/ctf/sqlilabs_writeup.html"><strong aria-hidden="true">19.36.</strong> sqlilabs WriteUp</a></li><li class="chapter-item "><a href="../../posts/ctf/ctf_train_at_hangzhou.html"><strong aria-hidden="true">19.37.</strong> ctf train at hangzhou</a></li><li class="chapter-item "><a href="../../posts/ctf/ctf_common_mindmap_list.html"><strong aria-hidden="true">19.38.</strong> ctf common mindmap list</a></li><li class="chapter-item "><a href="../../posts/ctf/error_based_sql_injection.html"><strong aria-hidden="true">19.39.</strong> Error Based SQL Injection</a></li><li class="chapter-item "><a href="../../posts/ctf/urlfinder_tutorial.html"><strong aria-hidden="true">19.40.</strong> URLFinder Tutorial</a></li><li class="chapter-item "><a href="../../posts/ctf/observer_ward_tutorial.html"><strong aria-hidden="true">19.41.</strong> observer_ward Tutorial</a></li><li class="chapter-item "><a href="../../posts/ctf/mysql_udf_.html"><strong aria-hidden="true">19.42.</strong> MySQL UDF 提权</a></li><li class="chapter-item "><a href="../../posts/ctf/nuclei__tutorial.html"><strong aria-hidden="true">19.43.</strong> Nuclei Tutorial</a></li><li class="chapter-item "><a href="../../posts/ctf/2024_ctf_solution_thinking.html"><strong aria-hidden="true">19.44.</strong> 2024 ctf solution thinking</a></li><li class="chapter-item "><a href="../../posts/ctf/man_che_si_te_bian_ma.html"><strong aria-hidden="true">19.45.</strong> 曼彻斯特编码</a></li></ol></li></ol>
</div>
<div id="sidebar-resize-handle" class="sidebar-resize-handle">
<div class="sidebar-resize-indicator"></div>
</div>
</nav>
<!-- Track and set sidebar scroll position -->
<script>
var sidebarScrollbox = document.querySelector('#sidebar .sidebar-scrollbox');
sidebarScrollbox.addEventListener('click', function(e) {
if (e.target.tagName === 'A') {
sessionStorage.setItem('sidebar-scroll', sidebarScrollbox.scrollTop);
}
}, { passive: true });
var sidebarScrollTop = sessionStorage.getItem('sidebar-scroll');
sessionStorage.removeItem('sidebar-scroll');
if (sidebarScrollTop) {
// preserve sidebar scroll position when navigating via links within sidebar
sidebarScrollbox.scrollTop = sidebarScrollTop;
} else {
// scroll sidebar to current active section when navigating via "next/previous chapter" buttons
var activeSection = document.querySelector('#sidebar .active');
if (activeSection) {
activeSection.scrollIntoView({ block: 'center' });
}
}
</script>
<div id="page-wrapper" class="page-wrapper">
<div class="page">
<div id="menu-bar-hover-placeholder"></div>
<div id="menu-bar" class="menu-bar sticky">
<div class="left-buttons">
<label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
<i class="fa fa-bars"></i>
</label>
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
<i class="fa fa-paint-brush"></i>
</button>
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
</ul>
<button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">
<i class="fa fa-search"></i>
</button>
</div>
<h1 class="menu-title">Andrew&#x27;s Blog</h1>
<div class="right-buttons">
<a href="https://gitlink.org.cn/dnrops/dnrops.gitlink.net.git" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i>
</a>
</div>
</div>
<div id="search-wrapper" class="hidden">
<form id="searchbar-outer" class="searchbar-outer">
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
</form>
<div id="searchresults-outer" class="searchresults-outer hidden">
<div id="searchresults-header" class="searchresults-header"></div>
<ul id="searchresults">
</ul>
</div>
</div>
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
<script>
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
});
</script>
<div id="content" class="content">
<main>
<h1 id="php-cheatsheet"><a class="header" href="#php-cheatsheet">PHP cheatsheet</a></h1>
<p>This <a href="https://www.php.net/manual/en/">PHP</a> cheat sheet provides a reference for quickly looking up the correct syntax for the code you use most frequently.</p>
<h2 id="getting-started"><a class="header" href="#getting-started"><a href="https://quickref.me/php#getting-started">#</a>Getting Started</a></h2>
<h3 id="hellophp"><a class="header" href="#hellophp">hello.php</a></h3>
<pre><code>&lt;?php // begin with a PHP open tag.
echo "Hello World\n";
print("Hello quickref.me");
?&gt;
</code></pre>
<p>PHP run command</p>
<pre><code>$ php hello.php
</code></pre>
<h3 id="variables"><a class="header" href="#variables">Variables</a></h3>
<pre><code>$boolean1 = true;
$boolean2 = True;
$int = 12;
$float = 3.1415926;
unset($float); // Delete variable
$str1 = "How are you?";
$str2 = 'Fine, thanks';
</code></pre>
<p>See: <a href="https://quickref.me/php#php-types">Types</a></p>
<h3 id="strings"><a class="header" href="#strings">Strings</a></h3>
<pre><code>$url = "quickref.me";
echo "I'm learning PHP at $url";
// Concatenate strings
echo "I'm learning PHP at " . $url;
$hello = "Hello, ";
$hello .= "World!";
echo $hello; # =&gt; Hello, World!
</code></pre>
<p>See: <a href="https://quickref.me/php#php-strings">Strings</a></p>
<h3 id="arrays"><a class="header" href="#arrays">Arrays</a></h3>
<pre><code>$num = [1, 3, 5, 7, 9];
$num[5] = 11;
unset($num[2]); // Delete variable
print_r($num); # =&gt; 1 3 7 9 11
echo count($num); # =&gt; 5
</code></pre>
<p>See: <a href="https://quickref.me/php#php-arrays">Arrays</a></p>
<h3 id="operators"><a class="header" href="#operators">Operators</a></h3>
<pre><code>$x = 1;
$y = 2;
$sum = $x + $y;
echo $sum; # =&gt; 3
</code></pre>
<p>See: <a href="https://quickref.me/php#php-operators">Operators</a></p>
<h3 id="include"><a class="header" href="#include">Include</a></h3>
<h4 id="varsphp"><a class="header" href="#varsphp">vars.php</a></h4>
<pre><code>&lt;?php // begin with a PHP open tag.
$fruit = 'apple';
echo "I was imported";
return 'Anything you like.';
?&gt;
</code></pre>
<h4 id="testphp"><a class="header" href="#testphp">test.php</a></h4>
<pre><code>&lt;?php
include 'vars.php';
echo $fruit . "\n"; # =&gt; apple
/* Same as include,
cause an error if cannot be included*/
require 'vars.php';
// Also works
include('vars.php');
require('vars.php');
// Include through HTTP
include 'http://x.com/file.php';
// Include and the return statement
$result = include 'vars.php';
echo $result; # =&gt; Anything you like.
?&gt;
</code></pre>
<h3 id="functions"><a class="header" href="#functions">Functions</a></h3>
<pre><code>function add($num1, $num2 = 1) {
return $num1 + $num2;
}
echo add(10); # =&gt; 11
echo add(10, 5); # =&gt; 15
</code></pre>
<p>See: <a href="https://quickref.me/php#php-functions">Functions</a></p>
<h3 id="comments"><a class="header" href="#comments">Comments</a></h3>
<pre><code># This is a one line shell-style comment
// This is a one line c++ style comment
/* This is a multi line comment
yet another line of comment */
</code></pre>
<h3 id="constants"><a class="header" href="#constants">Constants</a></h3>
<pre><code>const MY_CONST = "hello";
echo MY_CONST; # =&gt; hello
# =&gt; MY_CONST is: hello
echo 'MY_CONST is: ' . MY_CONST;
</code></pre>
<h3 id="classes"><a class="header" href="#classes">Classes</a></h3>
<pre><code>class Student {
public function __construct($name) {
$this-&gt;name = $name;
}
}
$alex = new Student("Alex");
</code></pre>
<p>See: <a href="https://quickref.me/php#php-classes">Classes</a></p>
<h2 id="php-types"><a class="header" href="#php-types"><a href="https://quickref.me/php#php-types">#</a>PHP Types</a></h2>
<h3 id="boolean"><a class="header" href="#boolean">Boolean</a></h3>
<pre><code>$boolean1 = true;
$boolean2 = TRUE;
$boolean3 = false;
$boolean4 = FALSE;
$boolean5 = (boolean) 1; # =&gt; true
$boolean6 = (boolean) 0; # =&gt; false
</code></pre>
<p>Boolean are case-insensitive</p>
<h3 id="integer"><a class="header" href="#integer">Integer</a></h3>
<pre><code>$int1 = 28; # =&gt; 28
$int2 = -32; # =&gt; -32
$int3 = 012; # =&gt; 10 (octal)
$int4 = 0x0F; # =&gt; 15 (hex)
$int5 = 0b101; # =&gt; 5 (binary)
# =&gt; 2000100000 (decimal, PHP 7.4.0)
$int6 = 2_000_100_000;
</code></pre>
<p>See also: <a href="https://www.php.net/manual/en/language.types.integer.php">Integers</a></p>
<h3 id="strings-1"><a class="header" href="#strings-1">Strings</a></h3>
<pre><code>echo 'this is a simple string';
</code></pre>
<p>See: <a href="https://quickref.me/php#php-strings">Strings</a></p>
<h3 id="arrays-1"><a class="header" href="#arrays-1">Arrays</a></h3>
<pre><code>$arr = array("hello", "world", "!");
</code></pre>
<p>See: <a href="https://quickref.me/php#php-arrays">Arrays</a></p>
<h3 id="float-double"><a class="header" href="#float-double">Float (Double)</a></h3>
<pre><code>$float1 = 1.234;
$float2 = 1.2e7;
$float3 = 7E-10;
$float4 = 1_234.567; // as of PHP 7.4.0
var_dump($float4); // float(1234.567)
$float5 = 1 + "10.5"; # =&gt; 11.5
$float6 = 1 + "-1.3e3"; # =&gt; -1299
</code></pre>
<h3 id="null"><a class="header" href="#null">Null</a></h3>
<pre><code>$a = null;
$b = 'Hello php!';
echo $a ?? 'a is unset'; # =&gt; a is unset
echo $b ?? 'b is unset'; # =&gt; Hello php
$a = array();
$a == null # =&gt; true
$a === null # =&gt; false
is_null($a) # =&gt; false
</code></pre>
<h3 id="iterables"><a class="header" href="#iterables">Iterables</a></h3>
<pre><code>function bar(): iterable {
return [1, 2, 3];
}
function gen(): iterable {
yield 1;
yield 2;
yield 3;
}
foreach (bar() as $value) {
echo $value; # =&gt; 123
}
</code></pre>
<h2 id="php-strings"><a class="header" href="#php-strings"><a href="https://quickref.me/php#php-strings">#</a>PHP Strings</a></h2>
<h3 id="string"><a class="header" href="#string">String</a></h3>
<pre><code># =&gt; '$String'
$sgl_quotes = '$String';
# =&gt; 'This is a $String.'
$dbl_quotes = "This is a $sgl_quotes.";
# =&gt; a tab character.
$escaped = "a \t tab character.";
# =&gt; a slash and a t: \t
$unescaped = 'a slash and a t: \t';
</code></pre>
<h3 id="multi-line"><a class="header" href="#multi-line">Multi-line</a></h3>
<pre><code>$str = "foo";
// Uninterpolated multi-liners
$nowdoc = &lt;&lt;&lt;'END'
Multi line string
$str
END;
// Will do string interpolation
$heredoc = &lt;&lt;&lt;END
Multi line
$str
END;
</code></pre>
<h3 id="manipulation"><a class="header" href="#manipulation">Manipulation</a></h3>
<pre><code>$s = "Hello Phper";
echo strlen($s); # =&gt; 11
echo substr($s, 0, 3); # =&gt; Hel
echo substr($s, 1); # =&gt; ello Phper
echo substr($s, -4, 3);# =&gt; hpe
echo strtoupper($s); # =&gt; HELLO PHPER
echo strtolower($s); # =&gt; hello phper
echo strpos($s, "l"); # =&gt; 2
var_dump(strpos($s, "L")); # =&gt; false
</code></pre>
<p>See: <a href="https://www.php.net/manual/en/ref.strings.php">String Functions</a></p>
<h2 id="php-arrays"><a class="header" href="#php-arrays"><a href="https://quickref.me/php#php-arrays">#</a>PHP Arrays</a></h2>
<h3 id="defining"><a class="header" href="#defining">Defining</a></h3>
<pre><code>$a1 = ["hello", "world", "!"]
$a2 = array("hello", "world", "!");
$a3 = explode(",", "apple,pear,peach");
</code></pre>
<h4 id="mixed-int-and-string-keys"><a class="header" href="#mixed-int-and-string-keys">Mixed int and string keys</a></h4>
<pre><code>$array = array(
"foo" =&gt; "bar",
"bar" =&gt; "foo",
100 =&gt; -100,
-100 =&gt; 100,
);
var_dump($array);
</code></pre>
<h4 id="short-array-syntax"><a class="header" href="#short-array-syntax">Short array syntax</a></h4>
<pre><code>$array = [
"foo" =&gt; "bar",
"bar" =&gt; "foo",
];
</code></pre>
<h3 id="multi-array"><a class="header" href="#multi-array">Multi array</a></h3>
<pre><code>$multiArray = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
];
print_r($multiArray[0][0]) # =&gt; 1
print_r($multiArray[0][1]) # =&gt; 2
print_r($multiArray[0][2]) # =&gt; 3
</code></pre>
<h3 id="multi-type"><a class="header" href="#multi-type">Multi type</a></h3>
<pre><code>$array = array(
"foo" =&gt; "bar",
42 =&gt; 24,
"multi" =&gt; array(
"dim" =&gt; array(
"a" =&gt; "foo"
)
)
);
# =&gt; string(3) "bar"
var_dump($array["foo"]);
# =&gt; int(24)
var_dump($array[42]);
# =&gt; string(3) "foo"
var_dump($array["multi"]["dim"]["a"]);
</code></pre>
<h3 id="manipulation-1"><a class="header" href="#manipulation-1">manipulation</a></h3>
<pre><code>$arr = array(5 =&gt; 1, 12 =&gt; 2);
$arr[] = 56; // Append
$arr["x"] = 42; // Add with key
sort($arr); // Sort
unset($arr[5]); // Remove
unset($arr); // Remove all
</code></pre>
<p>See: <a href="https://www.php.net/manual/en/ref.array.php">Array Functions</a></p>
<h3 id="indexing-iteration"><a class="header" href="#indexing-iteration">Indexing iteration</a></h3>
<pre><code>$array = array('a', 'b', 'c');
$count = count($array);
for ($i = 0; $i &lt; $count; $i++) {
echo "i:{$i}, v:{$array[$i]}\n";
}
</code></pre>
<h3 id="value-iteration"><a class="header" href="#value-iteration">Value iteration</a></h3>
<pre><code>$colors = array('red', 'blue', 'green');
foreach ($colors as $color) {
echo "Do you like $color?\n";
}
</code></pre>
<h3 id="key-iteration"><a class="header" href="#key-iteration">Key iteration</a></h3>
<pre><code>$arr = ["foo" =&gt; "bar", "bar" =&gt; "foo"];
foreach ( $arr as $key =&gt; $value )
{
echo "key: " . $key . "\n";
echo "val: {$arr[$key]}\n";
}
</code></pre>
<h3 id="concatenate-arrays"><a class="header" href="#concatenate-arrays">Concatenate arrays</a></h3>
<pre><code>$a = [1, 2];
$b = [3, 4];
// PHP 7.4 later
# =&gt; [1, 2, 3, 4]
$result = [...$a, ...$b];
</code></pre>
<h3 id="into-functions"><a class="header" href="#into-functions">Into functions</a></h3>
<pre><code>$array = [1, 2];
function foo(int $a, int $b) {
echo $a; # =&gt; 1
echo $b; # =&gt; 2
}
foo(...$array);
</code></pre>
<h3 id="splat-operator"><a class="header" href="#splat-operator">Splat Operator</a></h3>
<pre><code>function foo($first, ...$other) {
var_dump($first); # =&gt; a
var_dump($other); # =&gt; ['b', 'c']
}
foo('a', 'b', 'c' /*, ...*/ );
// or
function foo($first, string ...$other){}
</code></pre>
<h2 id="php-operators"><a class="header" href="#php-operators"><a href="https://quickref.me/php#php-operators">#</a>PHP Operators</a></h2>
<h3 id="arithmetic"><a class="header" href="#arithmetic">Arithmetic</a></h3>
<div class="table-wrapper"><table><thead><tr><th><code>+</code></th><th>Addition</th></tr></thead><tbody>
<tr><td><code>-</code></td><td>Subtraction</td></tr>
<tr><td><code>*</code></td><td>Multiplication</td></tr>
<tr><td><code>/</code></td><td>Division</td></tr>
<tr><td><code>%</code></td><td>Modulo</td></tr>
<tr><td><code>**</code></td><td>Exponentiation</td></tr>
</tbody></table>
</div>
<h3 id="assignment"><a class="header" href="#assignment">Assignment</a></h3>
<div class="table-wrapper"><table><thead><tr><th><code>a += b</code></th><th>Same as <code>a = a + b</code></th></tr></thead><tbody>
<tr><td><code>a -= b</code></td><td>Same as <code>a = a b</code></td></tr>
<tr><td><code>a *= b</code></td><td>Same as <code>a = a * b</code></td></tr>
<tr><td><code>a /= b</code></td><td>Same as <code>a = a / b</code></td></tr>
<tr><td><code>a %= b</code></td><td>Same as <code>a = a % b</code></td></tr>
</tbody></table>
</div>
<h3 id="comparison"><a class="header" href="#comparison">Comparison</a></h3>
<div class="table-wrapper"><table><thead><tr><th><code>==</code></th><th>Equal</th></tr></thead><tbody>
<tr><td><code>===</code></td><td>Identical</td></tr>
<tr><td><code>!=</code></td><td>Not equal</td></tr>
<tr><td><code>&lt;&gt;</code></td><td>Not equal</td></tr>
<tr><td><code>!==</code></td><td>Not identical</td></tr>
<tr><td><code>&lt;</code></td><td>Less than</td></tr>
<tr><td><code>&gt;</code></td><td>Greater than</td></tr>
<tr><td><code>&lt;=</code></td><td>Less than or equal</td></tr>
<tr><td><code>&gt;=</code></td><td>Greater than or equal</td></tr>
<tr><td><code>&lt;=&gt;</code></td><td>Less than/equal/greater than</td></tr>
</tbody></table>
</div>
<h3 id="logical"><a class="header" href="#logical">Logical</a></h3>
<div class="table-wrapper"><table><thead><tr><th><code>and</code></th><th>And</th></tr></thead><tbody>
<tr><td><code>or</code></td><td>Or</td></tr>
<tr><td><code>xor</code></td><td>Exclusive or</td></tr>
<tr><td><code>!</code></td><td>Not</td></tr>
<tr><td><code>&amp;&amp;</code></td><td>And</td></tr>
<tr><td>`</td><td></td></tr>
</tbody></table>
</div>
<h3 id="arithmetic-1"><a class="header" href="#arithmetic-1">Arithmetic</a></h3>
<pre><code>// Arithmetic
$sum = 1 + 1; // 2
$difference = 2 - 1; // 1
$product = 2 * 2; // 4
$quotient = 2 / 1; // 2
// Shorthand arithmetic
$num = 0;
$num += 1; // Increment $num by 1
echo $num++; // Prints 1 (increments after evaluation)
echo ++$num; // Prints 3 (increments before evaluation)
$num /= $float; // Divide and assign the quotient to $num
</code></pre>
<h3 id="bitwise"><a class="header" href="#bitwise">Bitwise</a></h3>
<div class="table-wrapper"><table><thead><tr><th><code>&amp;</code></th><th>And</th></tr></thead><tbody>
<tr><td>`</td><td>`</td></tr>
<tr><td><code>^</code></td><td>Xor (exclusive or)</td></tr>
<tr><td><code>~</code></td><td>Not</td></tr>
<tr><td><code>&lt;&lt;</code></td><td>Shift left</td></tr>
<tr><td><code>&gt;&gt;</code></td><td>Shift right</td></tr>
</tbody></table>
</div>
<h2 id="php-conditionals"><a class="header" href="#php-conditionals"><a href="https://quickref.me/php#php-conditionals">#</a>PHP Conditionals</a></h2>
<h3 id="if-elseif-else"><a class="header" href="#if-elseif-else">If elseif else</a></h3>
<pre><code>$a = 10;
$b = 20;
if ($a &gt; $b) {
echo "a is bigger than b";
} elseif ($a == $b) {
echo "a is equal to b";
} else {
echo "a is smaller than b";
}
</code></pre>
<h3 id="switch"><a class="header" href="#switch">Switch</a></h3>
<pre><code>$x = 0;
switch ($x) {
case '0':
print "it's zero";
break;
case 'two':
case 'three':
// do something
break;
default:
// do something
}
</code></pre>
<h3 id="ternary-operator"><a class="header" href="#ternary-operator">Ternary operator</a></h3>
<pre><code># =&gt; Does
print (false ? 'Not' : 'Does');
$x = false;
# =&gt; Does
print($x ?: 'Does');
$a = null;
$b = 'Does print';
# =&gt; a is unset
echo $a ?? 'a is unset';
# =&gt; print
echo $b ?? 'b is unset';
</code></pre>
<h3 id="match"><a class="header" href="#match">Match</a></h3>
<pre><code>$statusCode = 500;
$message = match($statusCode) {
200, 300 =&gt; null,
400 =&gt; 'not found',
500 =&gt; 'server error',
default =&gt; 'known status code',
};
echo $message; # =&gt; server error
</code></pre>
<p>See: <a href="https://www.php.net/manual/en/control-structures.match.php">Match</a></p>
<h3 id="match-expressions"><a class="header" href="#match-expressions">Match expressions</a></h3>
<pre><code>$age = 23;
$result = match (true) {
$age &gt;= 65 =&gt; 'senior',
$age &gt;= 25 =&gt; 'adult',
$age &gt;= 18 =&gt; 'young adult',
default =&gt; 'kid',
};
echo $result; # =&gt; young adult
</code></pre>
<h2 id="php-loops"><a class="header" href="#php-loops"><a href="https://quickref.me/php#php-loops">#</a>PHP Loops</a></h2>
<h3 id="while"><a class="header" href="#while">while</a></h3>
<pre><code>$i = 1;
# =&gt; 12345
while ($i &lt;= 5) {
echo $i++;
}
</code></pre>
<h3 id="do-while"><a class="header" href="#do-while">do while</a></h3>
<pre><code>$i = 1;
# =&gt; 12345
do {
echo $i++;
} while ($i &lt;= 5);
</code></pre>
<h3 id="for-i"><a class="header" href="#for-i">for i</a></h3>
<pre><code># =&gt; 12345
for ($i = 1; $i &lt;= 5; $i++) {
echo $i;
}
</code></pre>
<h3 id="break"><a class="header" href="#break">break</a></h3>
<pre><code># =&gt; 123
for ($i = 1; $i &lt;= 5; $i++) {
if ($i === 4) {
break;
}
echo $i;
}
</code></pre>
<h3 id="continue"><a class="header" href="#continue">continue</a></h3>
<pre><code># =&gt; 1235
for ($i = 1; $i &lt;= 5; $i++) {
if ($i === 4) {
continue;
}
echo $i;
}
</code></pre>
<h3 id="foreach"><a class="header" href="#foreach">foreach</a></h3>
<pre><code>$a = ['foo' =&gt; 1, 'bar' =&gt; 2];
# =&gt; 12
foreach ($a as $k) {
echo $k;
}
</code></pre>
<p>See: <a href="https://quickref.me/php#php-value-iteration">Array iteration</a></p>
<h2 id="php-functions"><a class="header" href="#php-functions"><a href="https://quickref.me/php#php-functions">#</a>PHP Functions</a></h2>
<h3 id="returning-values"><a class="header" href="#returning-values">Returning values</a></h3>
<pre><code>function square($x)
{
return $x * $x;
}
echo square(4); # =&gt; 16
</code></pre>
<h3 id="return-types"><a class="header" href="#return-types">Return types</a></h3>
<pre><code>// Basic return type declaration
function sum($a, $b): float {/*...*/}
function get_item(): string {/*...*/}
class C {}
// Returning an object
function getC(): C { return new C; }
</code></pre>
<h3 id="nullable-return-types"><a class="header" href="#nullable-return-types">Nullable return types</a></h3>
<pre><code>// Available in PHP 7.1
function nullOrString(int $v) : ?string
{
return $v % 2 ? "odd" : null;
}
echo nullOrString(3); # =&gt; odd
var_dump(nullOrString(4)); # =&gt; NULL
</code></pre>
<p>See: <a href="https://www.php.net/manual/en/migration71.new-features.php">Nullable types</a></p>
<h3 id="void-functions"><a class="header" href="#void-functions">Void functions</a></h3>
<pre><code>// Available in PHP 7.1
function voidFunction(): void
{
echo 'Hello';
return;
}
voidFunction(); # =&gt; Hello
</code></pre>
<h3 id="variable-functions"><a class="header" href="#variable-functions">Variable functions</a></h3>
<pre><code>function bar($arg = '')
{
echo "In bar(); arg: '$arg'.\n";
}
$func = 'bar';
$func('test'); # =&gt; In bar(); arg: test
</code></pre>
<h3 id="anonymous-functions"><a class="header" href="#anonymous-functions">Anonymous functions</a></h3>
<pre><code>$greet = function($name)
{
printf("Hello %s\r\n", $name);
};
$greet('World'); # =&gt; Hello World
$greet('PHP'); # =&gt; Hello PHP
</code></pre>
<h3 id="recursive-functions"><a class="header" href="#recursive-functions">Recursive functions</a></h3>
<pre><code>function recursion($x)
{
if ($x &lt; 5) {
echo "$x";
recursion($x + 1);
}
}
recursion(1); # =&gt; 1234
</code></pre>
<h3 id="default-parameters"><a class="header" href="#default-parameters">Default parameters</a></h3>
<pre><code>function coffee($type = "cappuccino")
{
return "Making a cup of $type.\n";
}
# =&gt; Making a cup of cappuccino.
echo coffee();
# =&gt; Making a cup of .
echo coffee(null);
# =&gt; Making a cup of espresso.
echo coffee("espresso");
</code></pre>
<h3 id="arrow-functions"><a class="header" href="#arrow-functions">Arrow Functions</a></h3>
<pre><code>$y = 1;
$fn1 = fn($x) =&gt; $x + $y;
// equivalent to using $y by value:
$fn2 = function ($x) use ($y) {
return $x + $y;
};
echo $fn1(5); # =&gt; 6
echo $fn2(5); # =&gt; 6
</code></pre>
<h2 id="php-classes"><a class="header" href="#php-classes"><a href="https://quickref.me/php#php-classes">#</a>PHP Classes</a></h2>
<h3 id="constructor"><a class="header" href="#constructor">Constructor</a></h3>
<pre><code>class Student {
public function __construct($name) {
$this-&gt;name = $name;
}
public function print() {
echo "Name: " . $this-&gt;name;
}
}
$alex = new Student("Alex");
$alex-&gt;print(); # =&gt; Name: Alex
</code></pre>
<h3 id="inheritance"><a class="header" href="#inheritance">Inheritance</a></h3>
<pre><code>class ExtendClass extends SimpleClass
{
// Redefine the parent method
function displayVar()
{
echo "Extending class\n";
parent::displayVar();
}
}
$extended = new ExtendClass();
$extended-&gt;displayVar();
</code></pre>
<h3 id="classes-variables"><a class="header" href="#classes-variables">Classes variables</a></h3>
<pre><code>class MyClass
{
const MY_CONST = 'value';
static $staticVar = 'static';
// Visibility
public static $var1 = 'pubs';
// Class only
private static $var2 = 'pris';
// The class and subclasses
protected static $var3 = 'pros';
// The class and subclasses
protected $var6 = 'pro';
// The class only
private $var7 = 'pri';
}
</code></pre>
<p>Access statically</p>
<pre><code>echo MyClass::MY_CONST; # =&gt; value
echo MyClass::$staticVar; # =&gt; static
</code></pre>
<h3 id="magic-methods"><a class="header" href="#magic-methods">Magic Methods</a></h3>
<pre><code>class MyClass
{
// Object is treated as a String
public function __toString()
{
return $property;
}
// opposite to __construct()
public function __destruct()
{
print "Destroying";
}
}
</code></pre>
<h3 id="interface"><a class="header" href="#interface">Interface</a></h3>
<pre><code>interface Foo
{
public function doSomething();
}
interface Bar
{
public function doSomethingElse();
}
class Cls implements Foo, Bar
{
public function doSomething() {}
public function doSomethingElse() {}
}
</code></pre>
<h2 id="miscellaneous"><a class="header" href="#miscellaneous"><a href="https://quickref.me/php#miscellaneous">#</a>Miscellaneous</a></h2>
<h3 id="basic-error-handling"><a class="header" href="#basic-error-handling">Basic error handling</a></h3>
<pre><code>try {
// Do something
} catch (Exception $e) {
// Handle exception
} finally {
echo "Always print!";
}
</code></pre>
<h3 id="exception-in-php-80"><a class="header" href="#exception-in-php-80">Exception in PHP 8.0</a></h3>
<pre><code>$nullableValue = null;
try {
$value = $nullableValue ?? throw new InvalidArgumentException();
} catch (InvalidArgumentException) { // Variable is optional
// Handle my exception
echo "print me!";
}
</code></pre>
<h3 id="custom-exception"><a class="header" href="#custom-exception">Custom exception</a></h3>
<pre><code>class MyException extends Exception {
// do something
}
</code></pre>
<p>Usage</p>
<pre><code>try {
$condition = true;
if ($condition) {
throw new MyException('bala');
}
} catch (MyException $e) {
// Handle my exception
}
</code></pre>
<h3 id="nullsafe-operator"><a class="header" href="#nullsafe-operator">Nullsafe Operator</a></h3>
<pre><code>// As of PHP 8.0.0, this line:
$result = $repo?-&gt;getUser(5)?-&gt;name;
// Equivalent to the following code:
if (is_null($repo)) {
$result = null;
} else {
$user = $repository-&gt;getUser(5);
if (is_null($user)) {
$result = null;
} else {
$result = $user-&gt;name;
}
}
</code></pre>
<p>See also: <a href="https://wiki.php.net/rfc/nullsafe_operator">Nullsafe Operator</a></p>
<h3 id="regular-expressions"><a class="header" href="#regular-expressions">Regular expressions</a></h3>
<pre><code>$str = "Visit Quickref.me";
echo preg_match("/qu/i", $str); # =&gt; 1
</code></pre>
<p>See: <a href="https://quickref.me/regex#regex-in-php">Regex in PHP</a></p>
<h3 id="fopen-mode"><a class="header" href="#fopen-mode">fopen() mode</a></h3>
<div class="table-wrapper"><table><thead><tr><th><code>r</code></th><th>Read</th></tr></thead><tbody>
<tr><td><code>r+</code></td><td>Read and write, prepend</td></tr>
<tr><td><code>w</code></td><td>Write, truncate</td></tr>
<tr><td><code>w+</code></td><td>Read and write, truncate</td></tr>
<tr><td><code>a</code></td><td>Write, append</td></tr>
<tr><td><code>a+</code></td><td>Read and write, append</td></tr>
</tbody></table>
</div>
<h3 id="runtime-defined-constants"><a class="header" href="#runtime-defined-constants">Runtime defined Constants</a></h3>
<pre><code>define("CURRENT_DATE", date('Y-m-d'));
// One possible representation
echo CURRENT_DATE; # =&gt; 2021-01-05
# =&gt; CURRENT_DATE is: 2021-01-05
echo 'CURRENT_DATE is: ' . CURRENT_DATE;
</code></pre>
</main>
<nav class="nav-wrapper" aria-label="Page navigation">
<!-- Mobile navigation buttons -->
<a rel="prev" href="../../posts/php/for_php_string_implment_some_extemtion_functions.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
<i class="fa fa-angle-left"></i>
</a>
<a rel="next prefetch" href="../../posts/leetcode/leetcode.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
<i class="fa fa-angle-right"></i>
</a>
<div style="clear: both"></div>
</nav>
</div>
</div>
<nav class="nav-wide-wrapper" aria-label="Page navigation">
<a rel="prev" href="../../posts/php/for_php_string_implment_some_extemtion_functions.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
<i class="fa fa-angle-left"></i>
</a>
<a rel="next prefetch" href="../../posts/leetcode/leetcode.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
<i class="fa fa-angle-right"></i>
</a>
</nav>
</div>
<script>
window.playground_line_numbers = true;
</script>
<script>
window.playground_copyable = true;
</script>
<script src="../../ace.js"></script>
<script src="../../editor.js"></script>
<script src="../../mode-rust.js"></script>
<script src="../../theme-dawn.js"></script>
<script src="../../theme-tomorrow_night.js"></script>
<script src="../../elasticlunr.min.js"></script>
<script src="../../mark.min.js"></script>
<script src="../../searcher.js"></script>
<script src="../../clipboard.min.js"></script>
<script src="../../highlight.js"></script>
<script src="../../book.js"></script>
<!-- Custom JS scripts -->
<script src="../../src/js/custom.js"></script>
</div>
</body>
</html>