foreach ($myarray as $value)
{
if (strpos($value,'mysearchstring'))
//add this $value to new array here
}
还需要声明第二个数组的位置以及如何?
答案 0 :(得分:8)
为了避免警告,第二个数组应该声明为
$newArray = array();
这可以像你这样整合到你的代码中
$newArray = array();
foreach ($myarray as $value){
if (strpos($value,'mysearchstring') !== false ){
$newArray[] = $value;
}
}
您的原始代码包含错误。
strpos如果不包含针,则返回false
,否则返回事件的索引。因此strpos($value,'mysearchstring')
如果$value
以'mysearchstring'
开头,则会返回0。由于PHP会将0
转换为false
,反之亦然,如果我们使用标准比较,它将不会被添加到数组中,因此我们需要在没有类型转换的情况下明确检查它是否为false(转换{例如{1}}到0
。为此,我们使用!==(注意两个false
)s。这在上面的代码中表示。
有关php中比较运算符的更多信息,请see the documentation。
修改强>
关于=
的推荐和使用,它将新元素广告到数组的末尾
如果没有指定键[在方括号中],则采用现有整数索引的最大值,新键将是该最大值加1.如果还没有整数索引,则键将为0(零)。
所以如果我们有一个数组
[]
答案 1 :(得分:4)
$newarray = array();
foreach ($myarray as $value) {
if(strpos($value, 'mysearchstring') !== false) {
$newarray[] = $value;
}
}
答案 2 :(得分:4)
如何使用array_filter
获取所有匹配元素,而不是像其他人的解决方案一样循环? array_filter
仅返回在传递回调函数时返回true的元素:
function matches_string($value)
{
return (strpos($value, 'mysearchstring') !== false);
}
$filtered_array = array_filter($my_array, "matches_string");
答案 3 :(得分:1)
$array1 = array("jonathan", "joe", "david", "sampson");
$array2 = array();
foreach ($array1 as $name) {
if (condition)
$array2[] = $name;
}
答案 4 :(得分:1)
您需要在foreach
之外声明您的第二个数组。否则,每次迭代都会重新启动。
$matches = array();
foreach ($myarray as $value) {
if (strpos($value,'mysearchstring') !== false) {
$matches[] = $value;
}
}
另外请确保使用与 false 的类型安全比较,因为如果针位于字符串的开头,strpos
可能会返回0。
答案 5 :(得分:1)
您可以在foreach之前声明第二个数组。像这样:
$secArray = array();
foreach ($myarray as $value)
{
if (strpos($value,'mysearchstring')) {
$secArray[] = $value;
}
}
[] -Operator是array_push的别名。
祝你好运,答案 6 :(得分:1)
使用array()构造函数在循环之前声明新数组。你需要使用!== false因为如果搜索字符串出现在字符串的开头,strpos将返回0(不是布尔值false)。您也可以考虑使用stripos进行不区分大小写的搜索。
$new_array = array();
foreach ($myarray as $value)
{
if (strpos($value,'mysearchstring') !== false )
$new_array[] = $value;
}
答案 7 :(得分:1)
你甚至可以使用array_filter和一个回调函数:
$original = array('one','two','three','four','five');
$only_containing_o = array_filter($original, create_function('$string','return strpos($string, "o") !== false;'));
print_r($only_containing_o);