PHP/MySQL 在数组中搜索特定值
PHP/MySQL search specific value in array
在 WordPress 环境中,我正在创建代表公司页面的页面。
这些公司页面销售某些品牌。所以我在元数据框中创建了一个自定义表单,让用户动态添加字段以添加他们销售的品牌数量。这些值存储在我的数据库中的一个数组中。
我现在遇到的问题是我想创建某种过滤器。
我创建了一个页面,显示可能的品牌徽标的所有图像。这些徽标有一个 link 添加了自定义值(品牌名称)。
例如:
<a href="somepage.php?brand='brandname'"><img src="brandname.jpg"></a>
在接下来的页面上,我执行了一个获取请求以检索添加到 url 的值。有了这个价值,我想展示所有销售该品牌的公司。
这是最后一部分的问题。我不知道如何在数组中搜索添加到 URL.
的值
所以我想我需要一个 SQL 语句 SELECT
* FROM $wpdb->postmeta WHERE
数据库 meta_key
字段 = 'brand'
和 meta_value =
GET['brand']
来自 url 并在 array
.
中找到
-- 更新--
所以我尝试了 DiegoCoderPlus 的解决方案,但没有给我想要的:
global $post;
$merk = $_GET['merk'];
$results = $wpdb->get_results("SELECT * FROM $wpdb->postmeta WHERE meta_key = 'brand'");
foreach ($results as $result){
$post_id = $result->post_id;
$brand = get_post_meta($post_id, 'brand', false);
$brandNeedle = $merk;
if(in_array($brandNeedle, $brand))
{
echo 'true<br>';
}else
{
echo 'false<br>';
}
}
这给了我两倍的结果false
。
这是一半好,因为我的数据库中只有两家公司用于测试。如果我使用不同的品牌,它还会显示两个 false
结果。
$brand
数组看起来像这样。也许有帮助:
Array
(
[0] => Array
(
[0] =>
)
)
false
Array
(
[0] => Array
(
[0] => brand 1
[1] => brand 2
)
)
如果您的阵列是 php 阵列,您唯一需要的是 in_array
它是这样工作的:
$brands = array('brand1', 'brand2', 'brand3', 'brand4');
$brandNeedle = 'brand2';
if(in_array($brandNeedle, $brands))
{
// it is on the array
}else
{
// it is not
}
在 WordPress 环境中,我正在创建代表公司页面的页面。 这些公司页面销售某些品牌。所以我在元数据框中创建了一个自定义表单,让用户动态添加字段以添加他们销售的品牌数量。这些值存储在我的数据库中的一个数组中。
我现在遇到的问题是我想创建某种过滤器。 我创建了一个页面,显示可能的品牌徽标的所有图像。这些徽标有一个 link 添加了自定义值(品牌名称)。 例如:
<a href="somepage.php?brand='brandname'"><img src="brandname.jpg"></a>
在接下来的页面上,我执行了一个获取请求以检索添加到 url 的值。有了这个价值,我想展示所有销售该品牌的公司。
这是最后一部分的问题。我不知道如何在数组中搜索添加到 URL.
的值所以我想我需要一个 SQL 语句 SELECT
* FROM $wpdb->postmeta WHERE
数据库 meta_key
字段 = 'brand'
和 meta_value =
GET['brand']
来自 url 并在 array
.
-- 更新--
所以我尝试了 DiegoCoderPlus 的解决方案,但没有给我想要的:
global $post;
$merk = $_GET['merk'];
$results = $wpdb->get_results("SELECT * FROM $wpdb->postmeta WHERE meta_key = 'brand'");
foreach ($results as $result){
$post_id = $result->post_id;
$brand = get_post_meta($post_id, 'brand', false);
$brandNeedle = $merk;
if(in_array($brandNeedle, $brand))
{
echo 'true<br>';
}else
{
echo 'false<br>';
}
}
这给了我两倍的结果false
。
这是一半好,因为我的数据库中只有两家公司用于测试。如果我使用不同的品牌,它还会显示两个 false
结果。
$brand
数组看起来像这样。也许有帮助:
Array
(
[0] => Array
(
[0] =>
)
)
false
Array
(
[0] => Array
(
[0] => brand 1
[1] => brand 2
)
)
如果您的阵列是 php 阵列,您唯一需要的是 in_array
它是这样工作的:
$brands = array('brand1', 'brand2', 'brand3', 'brand4');
$brandNeedle = 'brand2';
if(in_array($brandNeedle, $brands))
{
// it is on the array
}else
{
// it is not
}