Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
檀越@新空间
Coding Tree
提交
8de41a52
C
Coding Tree
项目概览
檀越@新空间
/
Coding Tree
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
Coding Tree
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
8de41a52
编写于
3月 10, 2022
作者:
彭世瑜
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix
上级
ec4d8e13
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
273 addition
and
18 deletion
+273
-18
blog/php-basic/array-function.md
blog/php-basic/array-function.md
+190
-18
blog/php-basic/index.md
blog/php-basic/index.md
+2
-0
blog/php-basic/thinking.md
blog/php-basic/thinking.md
+81
-0
未找到文件。
blog/php-basic/array-function.md
浏览文件 @
8de41a52
# 数组相关函数
自定义数组打印函数,便于查看
```
php
...
...
@@ -15,7 +14,7 @@ function print_array($array){
## 排序函数
按照
ASCII
码排序
按照
ASCII
码排序
`sort`
对 array 本身按照值(value)升序排序。(下标重排)
...
...
@@ -52,7 +51,6 @@ print_array($arr);
// 2 => Jack
```
`asort`
对 array 自身按照升序进行排序(下标保留)
```
php
...
...
@@ -87,7 +85,6 @@ print_array($arr);
// 1 => Jack
```
`ksort`
对 array 本身进行按键(key)升序排序。
```
php
...
...
@@ -141,21 +138,196 @@ print_array($arr);
## 指针函数
reset
end
next
prev
current
key
reset 将 array 的内部指针倒回到第一个单元并返回第一个数组单元的值。
```
php
reset
(
array
|
object
&
$array
)
:
mixed
```
end 将 array 的内部指针移动到最后一个单元并返回其值。
```
php
end
(
array
|
object
&
$array
)
:
mixed
```
next 将数组中的内部指针向前移动一位
```
php
next
(
array
|
object
&
$array
)
:
mixed
```
prev 将数组的内部指针倒回一位
```
php
prev
(
array
|
object
&
$array
)
:
mixed
```
current 返回数组中的当前值
```
php
current
(
array
|
object
$array
)
:
mixed
```
key 返回数组中当前单元的键名。
```
php
key
(
array
|
object
$array
)
:
int
|
string
|
null
```
> 注意:next 和 prev 移动指针,可能移出数组,只能通过 end 或者 reset 重置指针
示例
```
php
$arr
=
[
1
,
3
,
5
,
7
,
9
];
echo
next
(
$arr
);
echo
next
(
$arr
);
echo
prev
(
$arr
);
echo
current
(
$arr
);
echo
key
(
$arr
);
echo
reset
(
$arr
);
echo
end
(
$arr
);
// 3533119
```
## 其他函数
count
array_push()
array_pop
array_reverse
in_array
array_keys
array_values
count 统计数组、Countable 对象中所有元素的数量
```
php
count
(
Countable
|
array
$value
,
int
$mode
=
COUNT_NORMAL
)
:
int
// eg:
$arr
=
[
1
,
2
,
3
,
4
,
5
];
echo
count
(
$arr
);
// 5
```
array_push 将 array 当成一个栈,并将传入的变量压入 array 的末尾。
```
php
array_push
(
array
&
$array
,
mixed
$value1
,
mixed
$
...
=
?
)
:
int
// 和如下效果相同:
$array
[]
=
$var
;
```
array_pop 弹出并返回 array 最后一个元素的值
```
php
array_pop
(
array
&
$array
)
:
mixed
```
array_shift 将 array 的第一个单元移出并作为结果返回
```
php
array_shift
(
array
&
$array
)
:
mixed
```
array_unshift 在数组开头插入一个或多个单元
```
php
array_unshift
(
array
&
$array
,
mixed
...
$values
)
:
int
```
数据结构
-
栈 压栈,FILO先进后出
-
队列 排队,FIFO 先进先出
实现栈:
-
前面 array_unshift/array_shift
-
后面 array_push/array_pop
```
php
<?php
$arr
=
[];
// 入栈
array_push
(
$arr
,
1
);
array_push
(
$arr
,
2
);
array_push
(
$arr
,
3
);
// 出栈
echo
array_pop
(
$arr
),
array_pop
(
$arr
),
array_pop
(
$arr
);
// 321
```
实现队列:
-
后进前出 array_push/array_shift
-
前进后出 array_unshift/array_pop
```
php
<?php
$arr
=
[];
// 入队
array_push
(
$arr
,
1
);
array_push
(
$arr
,
2
);
array_push
(
$arr
,
3
);
// 出队
echo
array_shift
(
$arr
),
array_shift
(
$arr
),
array_shift
(
$arr
);
// 123
```
array_reverse 返回一个单元为相反顺序的新数组
```
php
array_reverse
(
array
$array
,
bool
$preserve_keys
=
false
)
:
array
https://www.bilibili.com/video/BV18x411H7qD?p=87&spm_id_from=pageDriver
\ No newline at end of file
// eg
$arr
=
[
1
,
2
,
3
,
4
,
5
];
print_array
(
array_reverse
(
$arr
));
// 0 => 5
// 1 => 4
// 2 => 3
// 3 => 2
// 4 => 1
```
in_array 检查数组中是否存在某个值
```
php
in_array
(
mixed
$needle
,
array
$haystack
,
bool
$strict
=
false
)
:
bool
// eg
$arr
=
[
1
,
2
,
3
,
4
,
5
];
var_dump
(
in_array
(
5
,
$arr
));
// bool(true)
```
array_keys 返回数组中部分的或所有的键名
```
php
array_keys
(
array
$array
)
:
array
array_keys
(
array
$array
,
mixed
$search_value
,
bool
$strict
=
false
)
:
array
// eg
$arr
=
[
'Tom'
,
'Jack'
,
'Steve'
];
echo
json_encode
(
array_keys
(
$arr
));
// [0,1,2]
```
array_values 返回 input 数组中所有的值并给其建立数字索引。
```
php
array_values
(
array
$array
)
:
array
// eg
$arr
=
[
'Tom'
,
'Jack'
,
'Steve'
];
echo
json_encode
(
array_values
(
$arr
));
// ["Tom","Jack","Steve"]
```
blog/php-basic/index.md
浏览文件 @
8de41a52
...
...
@@ -27,3 +27,5 @@
[
PHP 数组 array
](
blog/php-basic/array.md
)
[
PHP 数组相关函数
](
blog/php-basic/array-function.md
)
[
编程思想
](
blog/php-basic/thinking.md
)
blog/php-basic/thinking.md
0 → 100644
浏览文件 @
8de41a52
# 编程思想
编程思想:利用数学模式,来解决对应的需求问题,然后利用代码实现对象的数据模型
算法:使用代码实现对应的数学模型,从而解决对应的业务问题
## 递推算法
是一种简单的算法,即通过已知条件,利用特定关系得出中间结论,直至得到结果的算法
递推算法的分类:
-
顺推 通过最简单的条件(已知),然后逐步推演结果
-
逆推 通过结果找到规律,然后推到已知条件
递推思想:菲波那切数列
```
php
<?php
// 1 1 2 3 5 8 13...
// 规律 第一个数为1,第二个数为1,第三个数开始为前两数之和
// n(3) = n(2) + n(1);
$f
[
1
]
=
1
;
$f
[
2
]
=
1
;
$n
=
5
;
for
(
$i
=
3
;
$i
<=
$n
;
$i
++
){
$f
[
$i
]
=
$f
[
$i
-
1
]
+
$f
[
$i
-
2
];
}
echo
json_encode
(
$f
);
// {"1":1,"2":1,"3":2,"4":3,"5":5}
```
封装为函数
```
php
<?php
// 1 1 2 3 5 8 13...
// 规律 第一个数为1,第二个数为1,第三个数开始为前两数之和
// n(3) = n(2) + n(1);
function
fibonacci
(
$n
){
// 判断为第一个或第二个直接返回
if
(
$n
==
2
||
$n
==
2
){
return
1
;}
$f
[
1
]
=
1
;
$f
[
2
]
=
1
;
for
(
$i
=
3
;
$i
<=
$n
;
$i
++
){
$f
[
$i
]
=
$f
[
$i
-
1
]
+
$f
[
$i
-
2
];
}
// 返回最后一个
return
$f
[
$n
];
}
echo
fibonacci
(
7
);
// 13
```
https://www.bilibili.com/video/BV18x411H7qD?p=90&spm_id_from=pageDriver
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录