in_array()函数的小坑...

PHPin_array函数的行为示例及类型敏感性
本文详细介绍了PHP中的in_array函数在处理数组时的行为,包括基本用法、空值和null处理,以及引入第三个参数进行类型检测的情况。

时间:2019-08-28 09:36:40

先来看例子吧。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<?php

$arr = [1,2,3,4,5,6,7];

var_dump(in_array(1,$arr));

var_dump(in_array('1',$arr));

var_dump(in_array('1a',$arr));

var_dump(in_array('11',$arr));

echo '-------------------------------------'.PHP_EOL;

$arr2 = [1,11,12,111,'a1'];

var_dump(in_array('f111',$arr2));

var_dump(in_array('1,11',$arr2));//尴尬了。。

var_dump(in_array('1-11',$arr2));//尴尬了。。

var_dump(in_array('a1',$arr2));

echo '-------------------------------------'.PHP_EOL;

var_dump(in_array(0,[0]));

var_dump(in_array('0',[0]));

var_dump(in_array('',[0]));

var_dump(in_array(null,[0]));

图片.png

接着看

1

2

3

4

5

6

7

8

9

10

11

12

13

echo in_array(''array(0)) ? 1 : 0;   // 结果:1

echo in_array(null, array(0)) ? 1 : 0;  // 结果:1

echo in_array(false, array(0)) ? 1 : 0; // 结果:1

//-------------------------------------

//in_array支持第三个参数,强制对数据类型检测

echo in_array(''array(0), true) ? 1 : 0;   // 结果:0

echo in_array(null, array(0), true) ? 1 : 0;  // 结果:0

echo in_array(false, array(0), true) ? 1 : 0; // 结果:0

echo in_array(''array('0'), true) ? 1 : 0;   // 结果:0

echo in_array(null, array('0'), true) ? 1 : 0;  // 结果:0

echo in_array(false, array('0'), true) ? 1 : 0; // 结果:0

class RKLLMExtendParam(ctypes.Structure): _fields_ = [ ("base_domain_id", ctypes.c_int32), ("reserved", ctypes.c_uint8 * 112) ] class RKLLMParam(ctypes.Structure): _fields_ = [ ("model_path", ctypes.c_char_p), ("max_context_len", ctypes.c_int32), ("max_new_tokens", ctypes.c_int32), ("top_k", ctypes.c_int32), ("top_p", ctypes.c_float), ("temperature", ctypes.c_float), ("repeat_penalty", ctypes.c_float), ("frequency_penalty", ctypes.c_float), ("presence_penalty", ctypes.c_float), ("mirostat", ctypes.c_int32), ("mirostat_tau", ctypes.c_float), ("mirostat_eta", ctypes.c_float), ("skip_special_token", ctypes.c_bool), ("is_async", ctypes.c_bool), ("img_start", ctypes.c_char_p), ("img_end", ctypes.c_char_p), ("img_content", ctypes.c_char_p), ("extend_param", RKLLMExtendParam), ] class RKLLMLoraAdapter(ctypes.Structure): _fields_ = [ ("lora_adapter_path", ctypes.c_char_p), ("lora_adapter_name", ctypes.c_char_p), ("scale", ctypes.c_float) ] class RKLLMEmbedInput(ctypes.Structure): _fields_ = [ ("embed", ctypes.POINTER(ctypes.c_float)), ("n_tokens", ctypes.c_size_t) ] class RKLLMTokenInput(ctypes.Structure): _fields_ = [ ("input_ids", ctypes.POINTER(ctypes.c_int32)), ("n_tokens", ctypes.c_size_t) ] class RKLLMMultiModelInput(ctypes.Structure): _fields_ = [ ("prompt", ctypes.c_char_p), ("image_embed", ctypes.POINTER(ctypes.c_float)), ("n_image_tokens", ctypes.c_size_t) ] class RKLLMInputUnion(ctypes.Union): _fields_ = [ ("prompt_input", ctypes.c_char_p), ("embed_input", RKLLMEmbedInput), ("token_input", RKLLMTokenInput), ("multimodal_input", RKLLMMultiModelInput) ] class RKLLMInput(ctypes.Structure): _fields_ = [ ("input_mode", ctypes.c_int), ("input_data", RKLLMInputUnion) ] class RKLLMLoraParam(ctypes.Structure): _fields_ = [ ("lora_adapter_name", ctypes.c_char_p) ] class RKLLMPromptCacheParam(ctypes.Structure): _fields_ = [ ("save_prompt_cache", ctypes.c_int), ("prompt_cache_path", ctypes.c_char_p) ] class RKLLMInferParam(ctypes.Structure): _fields_ = [ ("mode", RKLLMInferMode), ("lora_params", ctypes.POINTER(RKLLMLoraParam)), ("prompt_cache_params", ctypes.POINTER(RKLLMPromptCacheParam)) ] class RKLLMResultLastHiddenLayer(ctypes.Structure): _fields_ = [ ("hidden_states", ctypes.POINTER(ctypes.c_float)), ("embd_size", ctypes.c_int), ("num_tokens", ctypes.c_int) ] class RKLLMResult(ctypes.Structure): _fields_ = [ ("text", ctypes.c_char_p), ("size", ctypes.c_int), ("last_hidden_layer", RKLLMResultLastHiddenLayer) ] 转换为node代码
03-09
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值